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

2024-10-06 12:30:12 发布

您现在位置:Python中文网/ 问答频道 /正文

这是我的一段代码,不需要的代码是隐藏的。你知道吗

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)

现在的问题是,当套接字接收到一次数据时,它会连续输出“Waiting for socks”、“received data”和“Network Cache:”

我理解错什么了吗?你知道吗

==更新==

因此可以“选择”长度为零的消息。我想做的是接收不长度为零的消息,我该怎么办?在recv阻塞线程和recv获取零长度消息之间有什么区别吗?你知道吗

其他信息:

我使用sock.listen()创建一个侦听套接字并接受来自客户端的连接,然后启动一个新线程并将已接受的套接字传递给新线程。所有消息都以\n结束。我期望得到的是<COMMAND> <ARGS>\n

谢谢。你知道吗


Tags: 代码debug消息fordataifloggingconn