-1

我有一个 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...
4

1 回答 1

1
#!/usr/bin/python

import socket

MESSAGE = "\xFF\xFF\xFF\xFFgetservers protocol_num args" 

sock = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
sock.sendto(MESSAGE, ("master.serverlist.org", 15000))

# here comes the trick
while True:

  buf = sock.recvfrom(2000) [0]
  responseSequence = "\xff\xff\xff\xffgetserversResponse"

   if buf.startswith(responseSequence):
于 2012-12-05T08:00:08.943 回答