@Georgy123

Как можно исправить этот код,чтобы правильно работало на windows 10?

import socket 
import threading 
import sys

class Server:
    s=socket.socket(socket.AF_INET,socket.SOCK_STREAM)
    connections = []
    def __init__(self):
        self.s.bind(('192.168.56.1',9090))
        self.s.listen(1)
    
    def handler(self,c,a):
        while True:
            data=c.recv(1024)
            for connection in self.connections:
                connection.send(data)
            if not data:
                self.connections.remove(c)
                c.close()
                print(str(a[0])+':'+str(a[1]),'disconnected')
                
                break

    def run(self):
        while True:
            c,a =self.s.accept()
            cThread=threading.Thread(target=self.handler,args=(c,a))
            cThread.daemon=True
            cThread.start()
            self.connections.append(c)
            print(str(a[0])+':'+str(a[1]),'connected')

class Client:
    
    s=socket.socket(socket.AF_INET,socket.SOCK_STREAM)

    def send_message(self):
        while True:
            self.s.send(bytes(input(""),'utf-8'))

    def __init__(self,addr):
        self.s.connect((addr,9090))

        iThread=threading.Thread(target=self.send_message)
        iThread.daemon=True
        iThread.start()

        while True:
            data=self.s.recv(1024)
            if not data:
                break
            print(str(data,'utf-8'))



if (len(sys.argv) > 1):
    client=Client(sys.argv[1])
else:
    server=Server()
    server.run()

Как можно переписать/исправить этот код для винды,чтобы при отключении одного клиента сервер не падал? Как сделать адекватный выход через ctrl+c без зависаний и полотна с ошибкой? Заранее признателен
  • Вопрос задан
  • 132 просмотра
Пригласить эксперта
Ответы на вопрос 1
@SantaKlaud
клиенты и сервер на одной машине ?
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы
ZClick Москва
от 50 000 до 200 000 руб.
Protoplan Краснодар
от 80 000 до 150 000 руб.
18 июл. 2019, в 20:17
80000 руб./за проект
18 июл. 2019, в 20:05
50000 руб./за проект
18 июл. 2019, в 19:04
2500 руб./за проект