Python 使用socketserver的聊天程序,如何创建客户端;“永远倾听”吗;?
在使用socketserver和TCP之前,我的聊天客户端会如下所示:Python 使用socketserver的聊天程序,如何创建客户端;“永远倾听”吗;?,python,tcp,socketserver,Python,Tcp,Socketserver,在使用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)
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 socketserver时,如何为客户端模拟此行为
编辑以下是我(糟糕)的尝试:
我得到:
BlockingIOError: [WinError 10035] A non-blocking socket operation could not be completed immediately
你真的想要一个非阻塞的插座吗?我相信是的,因为我可能在做其他事情的同时收到了一些东西。。。或者我误解了套接字阻塞?不,听起来您的理解是对的,只是您试图进行阻塞调用(
recvsock.recv
)而没有处理抛出的异常。您可以考虑使用select
或asyncio
模块来实现所需功能。@HumphreyTriscuit我现在有一个“except:pass”,因为我显然不能保证每次尝试都能获得一段数据。。。但是我仍然得到相同的错误…请参阅使用try/except的实现,尽管我认为这种方法有点幼稚<代码>选择/异步
在这里更有用
BlockingIOError: [WinError 10035] A non-blocking socket operation could not be completed immediately