每日分享:
不要因为没有掌声,而丢掉自己的梦想。
一、开发自己的静态Web服务器
步骤:
- 编写一个TCP服务端程序
- 获取浏览器发送的http请求报文数据
- 读取固定页面数据,把页面数据组装成HTTP响应报文数据发送给浏览器
- HTTP响应报文数据发送完成后,关闭服务于客户端的套接字
二、TCP服务端程序代码
index.html已经创建好了:
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>蓝汐最帅</title> </head> <body> <h1>蓝汐最帅</h1> </body> </html>
import socket
if __name__ == '__main__':
# 创建tcp服务端套接字
tcp_server_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
# 设置端口号复用,程序退出端口号立即释放
tcp_server_socket.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, True)
# 绑定端口号
tcp_server_socket.bind(("", 1314))
# 设置监听
tcp_server_socket.listen(128)
while True:
# 等待接收客户端连接请求
new_socket, ip_port = tcp_server_socket.accept()
# 代码执行至此说明连接建立成功
# 一次最多接收4KB
recv_client_data = new_socket.recv(4096)
# 对二进制数解码
recv_client_content = recv_client_data.decode("utf-8")
print(recv_client_content)
# 打开文件,读取数据
with open("index.html", "r", encoding='utf-8')as f:
file_data = f.read()
# 返回HTTP格式数据
# 响应行
response_line = "HTTP/1.1 200 OK\r\n"
# 响应头
response_header = "Sever: PWS6.6\r\n"
# 空行
# 响应体
response_body = file_data
# 构建HTTP数据
response = response_line + response_header + "\r\n" + response_body
# 转化为二进制
response_data = response.encode('utf-8')
# 发送数据
new_socket.send(response_data)
# 关闭套接字
new_socket.close()
三、小结
1. 编写一个TCP服务端程序
tcp_server_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM) while True: # 等待接收客户端连接请求 new_socket, ip_port = tcp_server_socket.accept()
2. 获取浏览器发送http请求报文数据
recv_client_data = new_socket.recv(4096)
3. 读取固定页面数据,把页面数据组装成HTTP响应报文数据发送给浏览器
response = response_line + response_header + "\r\n" + response_body # 转化为二进制 response_data = response.encode('utf-8') # 发送数据 new_socket.send(response_data)
4. HTTP响应报文数据发送完成以后,关闭服务于客户端的套接字
new_socket.close()