Как избежать [Errno 98] Адрес уже используется - PullRequest
0 голосов
/ 20 мая 2019

HTTP - соединение без сохранения состояния.Я делаю HTTP-сервер (я очень новичок в программировании).

Я хочу использовать методы POST для обмена информацией между браузером и http-сервером на основе Python.Чтобы заставить его работать, я должен закрыть сокет и снова открыть его (из-за спецификации HTTP, я понимаю, что соединение должно быть полностью закрыто, прежде чем вы сможете установить новое соединение с сервером, чтобы использовать метод GET или POST, опять же, я планирую отправлять большие файлытолько через POST, поскольку GET очень ограничен)

Существует механизм, который не позволяет мне закрывать / открывать сокет с помощью цикла.Я не уверен, является ли он частью сокетов Unix или спецификации Python.Вероятно, предыдущий случай.

Если я устанавливаю цикл socket.close () / socket.receive () - я получаю сообщение об ошибке: OSError: [Errno 98] Адрес уже используется Как решить мою дилемму.Apache делает это абсолютно без проблем (я понимаю, это в C или C ++), но, вероятно, в любом случае он использует одну и ту же библиотеку сокетов в Unix. (AFAIK python sockets является оберткой для библиотеки C или C ++)

Не знаюМне нравится идея http.server, потому что он не допускает публикацию без 'CGI', что, я думаю, мне не нужно.На мой взгляд, это довольно плохо документировано.

Пробовал читать документацию http.server.Пытался привязать номер порта метода POST, оказалось - не реально.Выполнено несколько часов поиска в Google.

while None is None:
    connection, addr = server.accept()
    content_of_connection = connection.recv(1024)
    connection.sendall(some_words.encode())
    connection.sendall(content_of_connection)
    print (content_of_connection.decode())
    server.close()

Необходимо, чтобы цикл 'socket.close ()' не вызывал ошибку "OSError: [Errno 98] Адрес уже используется".

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