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.pyport = 3000 时,服务器客户端工作正常,当我为其分配更高的值时,我得到 OSError: [Errno 22] Invalid argument (例如 port=3001 ,如上面的代码所示) . 可能是什么原因造成的?