Форум сайта python.su
from socket import * import threading import thread import sys def stopAll(): for i in workerClientList: workerClientList[i].stop() reader.stop() class WorkerReader(threading.Thread): def __init__(self): super(WorkerReader,self).__init__() self._stop = threading.Event() self.daemon = True def run(self): for line in sys.stdin: if (int(line) == 11): stopAll() def stop(self): self._stop.set() class WorkerClient(threading.Thread): def __init__(self, clientsock, addr): super(WorkerClient,self).__init__() self._stop = threading.Event() self.daemon = True self.clientsock = clientsock self.addr = addr def run(self): while 1: data = clientsock.recv(BUFSIZ) if not data: break msg = 'echoed:... ' + data clientsock.send(msg) clientsock.close() def stop(self): clientsock.close() self._stop.set() workerClientList = [] HOST = 'localhost' PORT = 5013 BUFSIZ = 1024 ADDR = (HOST, PORT) serversock = socket(AF_INET, SOCK_STREAM) serversock.bind(ADDR) serversock.listen(2) reader = WorkerReader() reader.start() while 1: print 'waiting for connection...' clientsock, addr = serversock.accept() print '...connected from:', addr newWorkerClient = WorkerClient(clientsock, addr) workerClientList.append(newWorkerClient) newWorkerClient.start()
import sys for line in sys.stdin: if line == 'exit': exit() else: print 'echo', line
Офлайн
как вариант использовать модуль signal что бы обрабатывать сигналы типа прерывания с клавиатуры или если UNIX то сигнал завершения приложения SUGTERM
Офлайн
Rumitможет в конце line есть символ ‘\n’
не отрабатывает, он его не правильно почему то проверяет на равенство
Rumitв теории, приложение висит в serversock.accept()
а он все равно продолжает работать.
Офлайн