//1.py
import http.server
import socketserver
import os
import threading
import sys
# 获取当前脚本所在的目录
DIRECTORY = os.path.dirname(os.path.abspath(__file__))
# 设置服务器的端口
PORT = 8000
# 自定义Handler,将根目录设置为脚本所在目录
class MyHTTPRequestHandler(http.server.SimpleHTTPRequestHandler):
def __init__(self, *args, **kwargs):
super().__init__(*args, directory=DIRECTORY, **kwargs)
# 创建服务器对象
httpd = socketserver.TCPServer(("", PORT), MyHTTPRequestHandler)
# 定义一个函数,用于监听键盘输入
def wait_for_quit():
input("按任意键退出服务...\n")
print("正在关闭服务器...")
httpd.shutdown() # 关闭服务器
httpd.server_close() # 释放端口
print("服务器已关闭。")
sys.exit(0) # 退出程序
# 启动服务器
print(f"服务器已启动,访问地址: http://<电脑的IP地址>:{PORT}")
print(f"服务器根目录: {DIRECTORY}")
# 启动一个线程来监听键盘输入
quit_thread = threading.Thread(target=wait_for_quit)
quit_thread.daemon = True # 设置为守护线程,主线程退出时自动结束
quit_thread.start()
# 启动服务器主循环
try:
httpd.serve_forever()
except KeyboardInterrupt:
print("\n服务器已关闭。")