用python实现一个简单的Web服务器端程序,该程序监听TCP 80端口,能够接受传入的HTTP连接请求并进行解析,并且能够正确的响应请求,回送相关的网页。如果请求的文件不存在于服务器中,则服务器应该向客户端发送“404 Not Found”差错报文。为简单起见,仅要求正确解析常用的get请求,并只需要支持一个HTTP连接。
时间: 2024-02-11 07:08:52 浏览: 15
下面是一个简单的Web服务器端程序,可以监听TCP 80端口,解析HTTP连接请求,并返回相关的网页内容。如果请求的文件不存在于服务器中,服务器会向客户端发送“404 Not Found”差错报文。这个程序仅支持GET请求,只支持一个HTTP连接。
```python
import socket
def handle_request(request):
# 解析请求报文,获取请求路径
path = request.split()[1]
if path == '/':
path = '/index.html'
# 尝试打开文件,读取文件内容
try:
with open('.' + path, 'rb') as f:
file_content = f.read()
response = b'HTTP/1.1 200 OK\r\n\r\n' + file_content
# 如果文件不存在,则返回 404 错误
except FileNotFoundError:
response = b'HTTP/1.1 404 Not Found\r\n\r\n404 Not Found'
# 返回响应报文
return response
def main():
# 创建一个 socket 对象,指定使用 IPv4 和 TCP 协议
server_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
# 绑定主机名为 localhost,端口号为 80 的地址
server_socket.bind(('localhost', 80))
# 监听连接请求,最大连接数为 1
server_socket.listen(1)
# 打印提示信息,表示服务器已经启动
print('Server is running...')
# 等待客户端连接
client_socket, addr = server_socket.accept()
# 接收客户端发送的请求数据,最大字节数为 1024
request_data = client_socket.recv(1024).decode()
# 处理请求,返回响应数据
response_data = handle_request(request_data)
# 发送响应数据给客户端
client_socket.sendall(response_data)
# 关闭连接
client_socket.close()
if __name__ == '__main__':
main()
```