4

我希望 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)?还是只是本地主机?

4

3 回答 3

10

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

于 2009-05-15T11:40:10.067 回答
3

"0.0.0.0" 将监听所有传入的主机。例如,

sock.bind(("0.0.0.0", 999))
data,addr = sock.recv(1024)
于 2009-05-15T11:42:54.567 回答
3

采用:

sock.bind(("", 999))
于 2009-05-15T11:49:50.073 回答