在python中创建UDP套接字时使用什么主机?

时间:2009-05-15 11:37:25

标签: python sockets udp

我希望ro接收一些通过VPN作为UDP数据包发送的数据。所以在python中编写(主要是复制)这个程序:

import socket
import sys

HOST = ??????? 
PORT = 80


# SOCK_DGRAM is the socket type to use for UDP sockets
sock = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)

sock.bind((HOST,PORT))
data,addr = sock.recv(1024)
print "Received: %s" % data
print "Addr: %s" % addr 

我应该使用什么作为主持人?我知道发件人的IP,但似乎任何不是本地的东西给了我socket.error:[Errno 10049]。 VPN给我的IP(发送方发送的IP相同,即)?或者只是localhost?

3 个答案:

答案 0 :(得分:10)

host参数是您要绑定到的主机IP。指定其中一个接口的IP(例如,您的公共IP,或localhost的127.0.0.1),或使用0.0.0.0绑定到所有接口。如果绑定到特定接口,则您的服务将仅在该接口上可用 - 例如,如果要运行只能通过localhost访问的内容,或者如果您有多个IP并且需要在每个上运行不同的服务器。

答案 1 :(得分:3)

“0.0.0.0”将侦听所有传入的主机。例如,

sock.bind(("0.0.0.0", 999))
data,addr = sock.recv(1024)

答案 2 :(得分:3)

使用:

sock.bind(("", 999))