В 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
является поиск серверав заданном диапазоне портов.Однако, если сервер-клиент работает нормально, когда port = 3000
в server.py
, я получаю OSError: [Errno 22] Invalid argument
, когда присваиваю ему более высокое значение (например, port=3001
, как показано в коде выше).Что может быть причиной этого?