通过TCP协议,模拟http协议的http服务器。
实现主要流程:
1.建立一个TCP服务器
2.用浏览器(即http客户端)来访问这个TCP服务器
3.返回数据给浏览器(这里返回的数据也是符合http协议的)
关于http和tcp协议的关系,可参考该链接https://www.cnblogs.com/caolei1108/p/8759408.html
话不多说:代码附上:
# -*- coding: UTF-8 -*-
# TCP模拟http协议的web服务器
# 浏览器打开 localhost:9999
import socket
def client_service(new_socket):
"""客户端服务程序"""
#1.接收数据
request = new_socket.recv(1024)
print(request)
#2.按照http协议的格式封装好回应包
# 2.1添加header
response = "HTTP/1.1 200 OK\r\n"
response += "\r\n"
# 2.2.添加body
response += "welcome to my website"
#3.返回数据(注意发送的数据需要编码为 utf-8 格式)
new_socket.send(response.encode("utf-8"))
#4.关闭连接套接字
new_socket.close()
def main():
#1 创建套接字
tcp_server = socket.socket(socket.AF_INET,socket.SOCK_STREAM)
#2.绑定端口
tcp_server.bind(("",9999))
#3.监听端口
tcp_server.listen(128)#最多同时监听128个端口
while True:
#4.等待新的客户端链接
new_socket,client_addr = tcp_server.accept()
#5.为这个客户端进行服务
client_service(new_socket)
#6.关闭服务器
tcp_server.close()
if __name__ == "__main__":
main()
运行效果: