python中的socket.accept();如何设置连接端口的客户端
在发布我长达一英里的脚本时,这里有一个简短的示例:我正在运行以下脚本之一的两台计算机之间创建TCP/IP连接: 服务器:python中的socket.accept();如何设置连接端口的客户端,python,python-3.x,python-sockets,Python,Python 3.x,Python Sockets,在发布我长达一英里的脚本时,这里有一个简短的示例:我正在运行以下脚本之一的两台计算机之间创建TCP/IP连接: 服务器: # server.py import socket s = socket.socket() host = socket.gethostname() port = 1234 s.bind((host, port)) s.listen(5) while True: c, addr = s.accept() print 'Connection from', a
# server.py
import socket
s = socket.socket()
host = socket.gethostname()
port = 1234
s.bind((host, port))
s.listen(5)
while True:
c, addr = s.accept()
print 'Connection from', addr
c.close()
客户:
#client.py
import socket
s = socket.socket()
host = socket.socket()
port = 1234
s.connect((host, port))
print s.recv(1024)
这给了我一个很好的解释,比如:
Connection from ('19*.1**.0.**', 54451)
Connection from ('19*.1**.0.**', 54452)
Connection from ('19*.1**.0.**', 54453)
Connection from ('19*.1**.0.**', 54454)
是什么控制54451-54454号码的创建?我明白这是什么;分配给客户端连接的端口号。我似乎不知道如何控制这个数字,或者至少控制它的发行范围
这可能吗?任何建议都会大有帮助。提前感谢。通常,如果您自己没有分配端口ID,您的操作系统或运行时系统会分配端口ID TCP特别是每个连接有两个端口:一个源端口和一个目标端口,有时称为本地端口和远程端口。使用
s.bind
设置服务器上的本地端口,而不设置任何远程端口(这很有意义:还没有实际连接)。使用s.connect
设置客户端上的远程(目标)端口,而不设置任何本地端口
当客户端向服务器发送连接请求时,客户端需要一个本地端口。因为它还没有,所以操作系统或运行时系统会从可用端口ID池中选择一个。然后,它将该ID绑定到客户端套接字的本地端s
,并发送一个请求,其中包含(我假设这里是192.168 RFC-1918专用地址空间):
(零表示“未分配”,因此本地IP地址未设置。您可以设置特定的IP地址,如果您的主机是多宿主机,这将非常有用。)
<local-addr=192.168.xxx.xxx, local-port=54451, remote-addr=S, remote-port=1234>
<local-addr=S, local-port=1234, remote-addr=192.168.xxx.xxx, remote-port=54451>
s.bind((0, port))