Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/sockets/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在python中创建UDP套接字时要使用哪个主机?_Python_Sockets_Udp - Fatal编程技术网

在python中创建UDP套接字时要使用哪个主机?

在python中创建UDP套接字时要使用哪个主机?,python,sockets,udp,Python,Sockets,Udp,我想接收一些通过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

我想接收一些通过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,但似乎任何非本地的东西都会给我套接字。错误:[Errno 10049]。VPN提供给我的IP(即发送方发送给我的IP)?还是仅本地主机?

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

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

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


所以“绑定到此IP”意味着“侦听发送到此IP的数据”?为什么要使用端口999?仅举一个例子,还是我也应该使用端口999?仅举一个例子。但是我确实在Python上运行了这个-没有错误要绑定到所有本地IP地址,我发现socket.INADDR_比0.0.0.0更清晰。你是对的。在发布之前,我通常会测试一些琐碎的代码片段,我想在这种情况下我没有。在Python中绑定到INADDR_ANY的正确方法是为元组的主机地址部分传递一个空字符串。我会更正我的答案,谢谢你指出这一点。
sock.bind(("", 999))