Spaces:
Runtime error
Runtime error
import http.server | |
import socketserver | |
import threading | |
import socket | |
import time | |
OUTPUT_HTML_DIR = "output_html" | |
def get_local_ip(): | |
""" 获取当前计算机在局域网中的 IP 地址 """ | |
try: | |
# 建立一个临时的连接,以便获取本地网络接口的IP地址 | |
# 这里的 'www.baidu.com' 是Google的公共DNS服务器,端口为80 | |
s = socket.socket(socket.AF_INET, socket.SOCK_DGRAM) | |
s.connect(("www.baidu.com", 80)) | |
local_ip = s.getsockname()[0] | |
s.close() | |
return local_ip | |
except Exception as e: | |
print("获取本地IP地址时出错:", e) | |
return None | |
class MyHttpRequestHandler(http.server.SimpleHTTPRequestHandler): | |
def do_GET(self): | |
# 指定要提供的文件的目录 | |
if self.path.find(OUTPUT_HTML_DIR) == -1 and self.path.endswith(".html"): | |
self.path = OUTPUT_HTML_DIR + self.path | |
print(f"请求的文件路径为:{self.path}") | |
return http.server.SimpleHTTPRequestHandler.do_GET(self) | |
def _start_server(server_port): | |
with socketserver.TCPServer(("", server_port), MyHttpRequestHandler) as httpd: | |
print(f"HTTP 文件服务器启动在端口 {server_port}") | |
httpd.serve_forever() | |
def start_server(server_port): | |
# 在单独的线程中启动服务器 | |
server_thread = threading.Thread(target=_start_server, args=(server_port,)) | |
server_thread.daemon = True # 设置为守护线程,这样当主程序退出时,服务器线程也会退出 | |
server_thread.start() | |
if __name__ == "__main__": | |
start_server(8001) | |
while True: | |
time.sleep(1000000) | |