我知道在這樣的回圈中等待套接字的代碼。
s = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
s.bind((host, port))
data, addr = s.recvfrom(1024)
data = data.decode('utf-8')
print("Message from: " str(addr))
print("From connected user: " data)
com = data
data = data.upper()
data = "Message Received: " data
但是,我想在另一個每秒重繪 的主回圈中使用這個函式。當它被呼叫時,它會凍結,直到遇到任何味精。
有什么方法可以“檢查味精”關閉,并將其集成到主回圈中,每秒重繪 一次?
非常感謝。
uj5u.com熱心網友回復:
您可以使用select.select輪詢是否準備好接收訊息:
import socket
import select
s = socket.socket(type=socket.SOCK_DGRAM)
s.bind(('', 5000))
while True:
r, _, _ = select.select([s], [], [], 1.0)
if r: # r will contain s if a message is ready
data, addr = s.recvfrom(1024)
data = data.decode('utf-8')
print(f'\n{addr}: {data}')
else:
print('.', end='', flush=True) # show activity
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/512326.html
標籤:Python插座非阻塞
