我使用了python的套接字模块并尝试使用
打开一个侦听套接字import socket
import sys
def getServerSocket(host, port):
for r in socket.getaddrinfo(host, port, socket.AF_UNSPEC,
socket.SOCK_STREAM, 0, socket.AI_PASSIVE):
af, socktype, proto, canonname, sa = r
try:
s = socket.socket(af, socktype, proto)
except socket.error, msg:
s = None
continue
try:
s.bind(sa)
s.listen(1)
except socket.error, msg:
s.close()
s = None
continue
break
if s is None:
print 'could not open socket'
sys.exit(1)
return s
主机为无,端口为15000。
然后程序将接受连接,但仅接受来自同一台机器上的连接。我需要做些什么来接受来自互联网的连接?
答案 0 :(得分:8)
尝试0.0.0.0。这就是最常用的。
答案 1 :(得分:5)
第一个问题是你的除外块是吞咽错误而没有报告。第二个问题是您尝试绑定到特定接口,而不是INADDR_ANY。您可能绑定到“localhost”,它只接受来自本地计算机的连接。
INADDR_ANY也称为常量0x00000000,但宏更有意义。
假设您正在使用IPv4(即“常规互联网”),请复制socket module page上第一个示例中的套接字/绑定代码。
答案 2 :(得分:1)
您需要绑定到您的公共IP地址或“所有”地址(通常用“0.0.0.0”表示)。
如果您尝试通过网络访问它,您可能还需要考虑防火墙等。