所以,我試圖用非常簡單的代碼是在這裏:http://wiki.python.org/moin/UdpCommunication簡單的Python UDP服務器:從故障除localhost其他客戶端接收數據包
(也在這裏): 發送:
import socket
UDP_IP = "127.0.0.1"
UDP_PORT = 5005
MESSAGE = "Hello, World!"
print "UDP target IP:", UDP_IP
print "UDP target port:", UDP_PORT
print "message:", MESSAGE
sock = socket.socket(socket.AF_INET, # Internet
socket.SOCK_DGRAM) # UDP
sock.sendto(MESSAGE, (UDP_IP, UDP_PORT))
接收:當我運行我的計算機上的兩個應用程序
import socket
UDP_IP = "127.0.0.1"
UDP_PORT = 5005
sock = socket.socket(socket.AF_INET, # Internet
socket.SOCK_DGRAM) # UDP
sock.bind((UDP_IP, UDP_PORT))
while True:
data, addr = sock.recvfrom(1024) # buffer size is 1024 bytes
print "received message:", data
的代碼工作正常。我把發送代碼放在我的筆記本電腦上:
UDP_IP="IP address for my computer"
其他一切都是一樣的。然而,沒有任何反應。我做錯了什麼?我使用wireshark並確定數據包正在發送和接收;但是,python程序沒有收到數據包。我很困惑。
任何幫助,非常感謝。 在此先感謝。在收到UDP報文時約束力的條款
sock.bind(("", UDP_PORT)) # could also use "0.0.0.0"
注意操作系統的行爲是不完全合乎邏輯的(也不是一致的),尤其是對多播流量:
感謝您的回覆。除了socket.INADDR_ANY之外,每個選項都不做任何事情,並且socket.INADDR_ANY給出了一個錯誤,表示它找到了一個int,但期望一個字符串,所以我使用了:sock.bind((str(socket.INADDR_ANY),UDP_PORT)),但這產生了:socket.gaierror:[Errno 11004] getaddrinfo失敗,當我實際上嘗試連接。 –
嗯,奇怪。我現在沒有想法了...... –
啊,是的,socket.INADDR_ANY只是映射到一個'int',這對Python'socket'模塊來說是沒用的。我會從答案中刪除。 (當然這並不能解決你的問題。) –