使用Python打开到外部计算机的套接字
我正在用以下代码在我的电脑上打开一个套接字。当我在我的电脑上访问 my_ip:5000 时,程序会有反应。但是,当我用另一台电脑访问时,就没有任何反应。
HOST = 'my_ip' # Symbolic name meaning the local host
PORT = 8000 # Arbitrary non-privileged port
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
s.bind((HOST, PORT))
s.listen(1)
conn, addr = s.accept()
print 'Connected by', addr
while 1:
data = conn.recv(1024)
if not data: break
conn.send(data)
conn.close()
我不确定这是不是防火墙的问题。当我用 manage.py runserver my_ip:8000
启动 Django 的测试服务器时,我可以从另一台电脑连接到这台机器。我不太明白为什么用上面的代码就无法从另一台电脑连接……
2 个回答
2
这段代码看起来是对的,所以你的问题可能出在别的地方(比如防火墙的问题或者“my_ip”的DNS问题)。
9
通过把 HOST 设置为 'my_ip'
,你可以让你的电脑只听取来自自己电脑的私有 IP 地址。最常见的例子就是 127.0.0.1
。如果你想让它接受来自任何地方的请求,可以把 HOST 设置为空字符串 (HOST=''
)。这样就能监听指定端口上所有的请求。记得在两台机器上使用相同的端口号,比如 5000 或 8000。
另外,要检查一下两台电脑之间是否有防火墙,这可能会阻止它们之间的连接。
为了测试你的电脑是否可以被访问,可以在一个没有私人信息的目录下运行 python -m SimpleHTTPServer
,然后从客户端尝试访问这个启动的网页服务器。