我有一个 python 脚本,它通过 UDP 联系服务器并接收几个数据报作为响应。我正在使用 recvfrom() 它只收集第一个响应而不是后续响应,我理解这是预期的行为。我应该使用什么来处理所有回复数据报(大约六个)?如果它实际上是 recvfrom(),我应该为循环使用什么条件,我还需要对套接字做什么才能在循环中使用 recvfrom()?
#!/usr/bin/python
import socket
MESSAGE = "\xFF\xFF\xFF\xFFgetservers protocol_num args"
endSequence = "\x45\x4f\x54\x00\x00\x00" #EOF
datagrams = []
sock = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
sock.sendto(MESSAGE, ("master.serverlist.org", 15000))
buf = sock.recvfrom(2000) [0]
#process...