Почему я не могу принять клиента? - PullRequest
0 голосов
/ 30 ноября 2019

Я запустил простой сервер, который подключается к клиенту, он работал месяц назад, но теперь это не так.

main

def main():
    (client_socket, client_address) = start_server(('0.0.0.0', 8200))

    print("online")
    menu = """
        enter the mode wanted out of:
        write,
        random,
        cal,
        file,
        close to terminate connection"""
    menu = menu.encode()
    main_menu(client_socket, menu)
    client_socket.close()
    server_socket.close()


if __name__ == '__main__':
    main()

start_server function

def start_server(addr):
    global server_socket
    server_socket = socket.socket()
    server_socket.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1)
    server_socket.bind(addr)
    server_socket.listen(1)
    (client_socket, client_address) = server_socket.accept()
    return client_socket, client_address

Сервер не запускает server_socket.accept(), и я получаюэта ошибка для клиента:

OSError: [WinError 10049] Запрошенный адрес недопустим в своем контексте

сокет клиента

    my_socket = socket.socket()  # creates the socket
    my_socket.connect(('0.0.0.0', 8200))  # connects to the server
    choose_mode(my_socket)  # main menu

почему он не принимает клиента?

Ответы [ 2 ]

1 голос
/ 01 декабря 2019

Я связал 0.0.0.0 и 8200, но подключился к 127.0.0.1.
сервер
(client_socket, client_address) = start_server(('0.0.0.0', 8200))
клиент
my_socket.connect(('127.0.0.1', 8200)) # connects to the server

Как мне объяснили: поскольку 0.0.0.0 не является целевым адресом для подключения, а привязка к 127.0.0.1 обычно слишком ограничительна

1 голос
/ 01 декабря 2019

Полагаю, вы пытаетесь запустить сервер на своем локальном хосте. В зависимости от платформы / ОС, на которой работает этот код, этот адрес может быть недействительным. Возможно, это то, что изменилось, ваша базовая платформа.

Чтобы избежать этой проблемы, используйте

start_server((socket.gethostname(), 8200))

или

start_server(('127.0.0.1', 8200))

Подробнее об использовании 0.0.0.0 можно прочитать ниже.

https://www.howtogeek.com/225487/what-is-the-difference-between-127.0.0.1-and-0.0.0.0/

...