在Python中创建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 = sock.recv(1024)
print "Received: %s" % data
print "Addr: %s" % addr
我应该用什么作为主机呢?我知道发送方的IP地址,但似乎任何不是本地的地址都会让我遇到socket.error: [Errno 10049]这个错误。那我应该用VPN给我的IP地址(也就是发送方发送到的那个IP)吗?还是直接用localhost就行?
3 个回答
3
使用:
sock.bind(("", 999))
3
"0.0.0.0" 会监听所有来自不同主机的请求。举个例子,
sock.bind(("0.0.0.0", 999))
data,addr = sock.recv(1024)
10
host参数是你想要绑定的主机IP地址。你可以指定你某个网络接口的IP地址(比如,你的公网IP,或者127.0.0.1代表本地计算机),或者使用0.0.0.0来绑定所有接口。如果你绑定到一个特定的接口,那么你的服务只会在那个接口上可用——例如,如果你想运行一个只能通过本地计算机访问的服务,或者如果你有多个IP地址,需要在每个地址上运行不同的服务器。