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) | |