получить доступ к сокету с помощью http.server - PullRequest
0 голосов
/ 12 июня 2018

У меня есть следующий код для запуска простого http-сервера

from http.server import SimpleHTTPRequestHandler, HTTPServer

host = "localhost"
port = 8881
server_class = HTTPServer
httpd = server_class((host, port), SimpleHTTPRequestHandler)
print("http server is running {}:{}".format(host, port))
try:
    httpd.serve_forever()
except KeyboardInterrupt:
    pass
httpd.server_close()

В какой-то момент в моем коде я хотел бы получить доступ к базовому сокету s сервера (который, я полагаю, долженможно как-то) сделать что-то вроде s.getsockname() например.Это возможно?

1 Ответ

0 голосов
/ 12 июня 2018

Вы можете получить к нему доступ как self.socket, вот так.

httpd.socket.getsockname()

Для получения дополнительной информации см. Исходный код базового класса SocketServer.

Однако для этого варианта использования правильный способ сделать это httpd.server_address.В общем, вы не должны пытаться использовать необработанный сокет.Также я бы пропустил переменную server_class и просто пошел бы HTTPServer((host, port), SimpleHTTPRequestHandler), чтобы все было просто.

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