我有一個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