python:选定的套接字不会返回任何内容

时间:2016-01-04 08:30:14

标签: python sockets select

这是我的一段代码,不必要的代码是隐藏的。

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

感谢。

0 个答案:

没有答案