西北工业大学软件学院网络与信息安全实验报告
时间: 2023-05-30 08:01:57 浏览: 69
实验名称:基于Python的简单Web服务器搭建
实验目的:
1.了解Web服务器的基本工作原理
2.掌握Python的socket编程
3.实现一个简单的Web服务器
实验环境:
操作系统:Windows10
开发环境:Python3.8
实验步骤:
1.创建一个新的Python文件,命名为server.py
2.引入需要的库
```python
import socket
import os
import threading
```
3.定义IP地址和端口号
```python
HOST = '127.0.0.1'
PORT = 8000
```
4.创建socket对象,绑定IP地址和端口号,并监听连接
```python
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
s.bind((HOST, PORT))
s.listen(5)
```
5.定义处理HTTP请求的函数
```python
def handle_request(client_socket):
# 接收客户端发送的HTTP请求
request = client_socket.recv(1024).decode('utf-8')
# 解析请求头和请求体
headers, _, body = request.partition('\r\n\r\n')
# 取出请求行中的文件路径
path = headers.split('\r\n')[0].split()[1]
# 如果文件路径是根目录,则返回index.html
if path == '/':
path = '/index.html'
# 拼接文件路径
file_path = os.path.join('.', path[1:])
# 判断文件是否存在
if os.path.exists(file_path):
# 打开文件,读取内容
with open(file_path, 'rb') as f:
response_body = f.read()
# 构造响应头
response_header = 'HTTP/1.1 200 OK\r\nContent-Type: text/html\r\nContent-Length: %d\r\n\r\n' % len(response_body)
# 把响应头和响应体发送给客户端
client_socket.send(response_header.encode('utf-8'))
client_socket.send(response_body)
else:
# 构造404响应
response_body = '<h1>404 Not Found</h1>'
response_header = 'HTTP/1.1 404 Not Found\r\nContent-Type: text/html\r\nContent-Length: %d\r\n\r\n' % len(response_body)
# 把响应头和响应体发送给客户端
client_socket.send(response_header.encode('utf-8'))
client_socket.send(response_body.encode('utf-8'))
# 关闭客户端连接
client_socket.close()
```
6.定义主函数,循环接收客户端连接并创建线程处理请求
```python
def main():
while True:
# 等待客户端连接
client_socket, client_addr = s.accept()
print('Client connected: %s:%d' % client_addr)
# 创建线程处理请求
t = threading.Thread(target=handle_request, args=(client_socket,))
t.start()
```
7.运行主函数
```python
if __name__ == '__main__':
main()
```
8.在同一目录下创建一个index.html文件
```html
<!DOCTYPE html>
<html>
<head>
<title>Web Server</title>
</head>
<body>
<h1>Hello, World!</h1>
</body>
</html>
```
9.在命令行中运行Python文件
```
python server.py
```
10.在浏览器中输入http://127.0.0.1:8000,可以看到页面显示“Hello, World!”
实验结果:
成功搭建了一个简单的Web服务器,可以在浏览器中访问到网页。
实验心得:
通过本次实验,我深入了解了Web服务器的基本工作原理,掌握了Python的socket编程,实现了一个简单的Web服务器。在实验过程中,我遇到了一些问题,如文件路径拼接、编码转换等,但通过查阅资料和思考,最终解决了这些问题。本次实验让我更加熟悉Python的编程语言和相关库函数的使用,同时也增强了我对计算机网络及其应用的理解和认识。