我在另一篇文章中找到了以下代码:#/ p>
UDP_IP = ''
UDP_PORT = 5008
s = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
s.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1)
s.bind(('', UDP_PORT))
while 1:
socket_list = [sys.stdin, s]
# Get the list sockets which are readable
read_sockets, write_sockets, error_sockets = select.select(socket_list , [], [])
for sock in read_sockets:
#incoming message from remote server
if sock == s:
data = sock.recv(4096)
if not data :
print '\nDisconnected from server'
sys.exit()
else :
#print data
sys.stdout.write(data)
#user entered a message
else :
msg = sys.stdin.readline()
s.send(msg)
我遇到的问题是for循环,因为它只在收到数据时才通过它。我真的希望它使用while循环并偶尔检查数据是否已收到,但我无法弄清楚如何执行此操作。
答案 0 :(得分:1)
在select语句中使用timeout参数。如果没有可用的数据(由空列表指示),您可以在while循环体中执行任何其他处理。