Max*_*rai 5 python sockets ports
我必须创建连接服务器<=>客户端.我用这段代码:服务器:
import socket
HOST = 'localhost'
PORT = 50007
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()
Run Code Online (Sandbox Code Playgroud)
客户:
import socket
HOST = 'localhost'
PORT = 50007
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
s.connect((HOST, PORT))
s.send('Hello, world')
data = s.recv(1024)
s.close()
print 'Received', repr(data)
Run Code Online (Sandbox Code Playgroud)
它工作正常!但是如果在没有路由器的计算机上创建服务器.如果你有路由器,在服务器创建之前你应该在你的调制解调器上打开50007端口.如何在没有端口启用的所有计算机上创建服务器?Torrent客户以某种方式做到了.谢谢.
问题有点令人困惑,但我会尽力帮忙.基本上,如果防火墙在服务器计算机上阻止端口(50007),您将无法从客户端与其建立TCP连接.这就是防火墙的目的.许多协议(例如SIP和bittorrent)确实使用防火墙和NAT导航策略,但这是一个复杂的主题,您可以在这里获得更多信息.您将注意到要有效地使用bittorrent,您必须为NAT启用端口转发并为防火墙取消阻止端口范围.此外,bittorrent使用tcp连接进行大多数数据传输.这是外卖:
首先,请注意BitTorrent程序必须具有两种类型的连接:
- 到跟踪器的出站HTTP连接,通常在端口6969上.
- 到对等机器的入站和出站连接,通常在端口6881及以上.