在客户端上接收多个UDP数据报

时间:2012-12-05 07:26:43

标签: python sockets udp

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

1 个答案:

答案 0 :(得分: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):