有什么方法可以检查Python套接字中是否有传入消息

时间:2019-02-19 08:42:54

标签: python sockets

我在Python中使用套接字,试图找出如何检查代码中是否有传入消息。如果有传入消息,我需要打印它。如果没有传入消息,则只会写“无数据”

我尝试检查是否为if条件,但它不起作用:

import socket
import time
#AG AYARLARI
HOST = ''
PORT = 16000
s=socket.socket(socket.AF_INET,socket.SOCK_STREAM)
s.bind((HOST,PORT))

#AGI BASLATMA


s.listen(1)
conn, addr = s.accept()
i=0
print('I:::',i)
print('Connected by', addr)
 while True:
        data=conn.recv(1024)
        if data:
            print(data)
        else:
            print (str.encode('No data'))
            break
  • 如果有消息请采取:“消息”

  • 如果不是:“无数据”

1 个答案:

答案 0 :(得分:1)

尝试使用select

    import select

    timeout = 10  # in seconds
    ready_sockets, _, _ = select.select(
        [conn], [], [], timeout
    )
    if ready_sockets:
        data = conn.recv(1024)
        print(data)
    else:
        print('No data')

在此处详细了解:https://docs.python.org/3.7/library/select.html