我有一个python脚本,它通过UDP联系服务器并接收几个数据报作为回应。我正在使用recvfrom(),它只收集第一个响应,而不是后面的响应,我知道这是预期的行为。我应该用什么来处理所有的答复数据报(大约六打)?如果它实际上是recvfrom(),我应该为循环使用什么条件,以及我需要对套接字做什么以便在循环中使用recvfrom()?在客户端上接收多个UDP数据报
#!/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...
犯错,你有没有考虑另一个recvfrom的()?一个循环? – EJP
@EJP,我是新来的套接字(和Python),我不知道要循环什么条件,或者是否有可能在同一套接字上执行多个recvfrom()。我试着重复这些代码,它仍然只处理一个数据报。我需要对recvfrom()之间的套接字状态做些什么吗? – thelionroars1337
如果你的问题是“什么情况下循环?或'我是否需要对套接字进行一些操作',那么您的问题中应该出现一些相应的字词。如果你提出模糊的问题,你会得到模糊的答案。 – EJP