До использования socketserver и TCP мой чат-клиент слушал так:
def recvData(self):
try:
while True:
data = self.sock.recv(1024)
if data:
data_handler(data)
except:
pass
while running:
dt = clock.tick(60)
client.recvData()
Как вы эмулируете это поведение для клиента, когда его сервер использует сервер сокетов TCP?
EDIT вот моя (плохая) попытка:
def recvData(self):
recvsock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
recvsock.connect(("192.168.0.7", 1234))
recvsock.setblocking(0)
while True:
data = recvsock.recv(1024)
if data:
print(data)
data_handler(data)
Я собираюсь:
BlockingIOError: [WinError 10035] A non-blocking socket operation could not be completed immediately
recvsock.recv
) и не обрабатываете выброшенное исключение. Вы можете изучить использование модуляselect
илиasyncio
для достижения того, что вам нужно. - person DaveBensonPhillips   schedule 04.04.2016select
/asyncio
здесь было бы полезнее - person DaveBensonPhillips   schedule 04.04.2016