-1

UDP経由でサーバーに接続し、応答でいくつかのデータグラムを受信するPythonスクリプトがあります。私は 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 に答える