OSError: [Errno 22] Недопустимый аргумент при «поиске» сервера на разных портах - PullRequest
0 голосов
/ 09 декабря 2018

В 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, как показано в коде выше).Что может быть причиной этого?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...