File size: 1,653 Bytes
2b54987
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
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)