在 server.py
我有:
import socket
port = 3001
s = socket.socket(socket.AF_INET,socket.SOCK_STREAM)
s.bind((socket.gethostname(), port))
s.listen(1)
try:
while 1:
f, addr = s.accept()
print('connected!')
f.send('message from the server'.encode())
finally:
s.close()
并在 client.py
:
import socket
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
port = 3000
while 1:
if port <= 4000:
try:
s.connect((socket.gethostname(), port))
print('connected!')
print(s.recv(2048).decode())
s.close()
break
except ConnectionRefusedError:
print("server not found at port", port, "... retrying at ",port+1)
port += 1
else:
print("server not found within range")
break
client.py
中循环的目的是在给定的端口范围内查找服务器 . 但是,当 server.py
中 port = 3000
时,服务器客户端工作正常,当我为其分配更高的值时,我得到 OSError: [Errno 22] Invalid argument
(例如 port=3001
,如上面的代码所示) . 可能是什么原因造成的?