给下列代码的每一行加上注释
时间: 2024-02-11 17:08:22 浏览: 81
```
import socket # 导入socket库
server_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM) # 创建服务器套接字
server_socket.bind(('localhost', 80)) # 绑定本地地址和端口
server_socket.listen(5) # 监听客户端连接,允许同时连接的客户端数为5
print('Server is running...') # 打印服务器启动信息
while True: # 进入无限循环,等待客户端连接
# 接收客户端连接
client_socket, addr = server_socket.accept() # 接受客户端连接并返回客户端套接字和地址信息
print('Client connected from {}:{}'.format(addr[0], addr[1])) # 打印客户端连接信息
# 接收客户端请求数据
request_data = client_socket.recv(1024).decode() # 接收客户端发送的请求数据,每次最多接收1024个字节,然后解码为字符串
# 解析请求数据,获取请求文件路径
if len(request_data.split('\r\n')) > 0: # 如果请求数据不为空
method, path, _ = request_data.split('\r\n')[0].split(' ') # 获取请求方法和请求路径,忽略HTTP版本号
if method == 'GET': # 如果请求方法为GET
if path == '/': # 如果请求路径为根目录
# 默认返回文件
file_path = 'index.html' # 返回index.html文件
else:
file_path = path[1:] # 去除路径中的第一个斜杠
try:
# 读取文件内容
with open(file_path, 'rb') as f: # 以二进制形式打开文件
file_content = f.read() # 读取文件内容
# 构造响应报文
response_data = b"HTTP/1.1 200 OK\r\nServer: MyServer\r\nContent-Type: text/html\r\nContent-Length: " + \
str(len(file_content)).encode() + b"\r\n\r\n" + file_content # 构造响应报文
except FileNotFoundError:
# 请求的文件不存在,返回 404 Not Found 错误
response_data = 'HTTP/1.1 404 Not Found\r\n\r\n404 Not Found'.encode() # 构造404 Not Found响应报文
# 发送响应数据给客户端
client_socket.sendall(response_data) # 发送响应数据给客户端
# 关闭客户端连接
client_socket.close() # 关闭客户端套接字
```
这段代码实现了一个基本的HTTP服务器,接收客户端发送的GET请求并返回相应的HTML文件内容,如果请求的文件不存在则返回404 Not Found错误。
阅读全文