这是我的一段代码,不必要的代码是隐藏的。
if sock_active:
r,w,x=select.select([conn],[],[],0.1)
if r:
try:
logging.debug("Waiting for socks")
sockdata=conn.recv(BUF_SIZE)
logging.debug("Recevied data")
if sockdata is None:
raise ConnectionError("socket closed")
else:
recvcache+=sockdata.decode()
logging.debug("Network Cache:%s"%recvcache)
现在问题是当套接字已经接收了一次数据时,它将连续输出"等待袜子","接收数据"和"网络缓存:"
我理解错了吗?
== UPDATE ==
因此可以选择零长度消息"我打算做的是接收不是零长度的消息,我该怎么办? recv
阻塞线程和recv
获取零长度消息之间有什么区别吗?
其他信息:
我使用sock.listen()
创建一个侦听套接字并接受来自客户端的连接,然后我启动一个新线程并将受到承载的套接字传递给新线程。所有邮件都以\n
结束。我希望接受的是<COMMAND> <ARGS>\n
感谢。