我有以下代码来运行简单的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()
之类的操作。这可能吗?
答案 0 :(得分:0)
您可以像$_GET
一样访问它。
self.socket
有关详细信息,请参阅基类SocketServer
的源代码。
但是,对于此用例,正确的方法是httpd.socket.getsockname()
。通常,您不应该尝试使用原始套接字。另外,我会跳过httpd.server_address
变量,然后转到server_class
以保持简单。