Python创建简单web服务器
- 步骤:
创建TCP服务端
1、导入套接字模块(socket)
2、创建套接字
3、设置地址重用
4、绑定端口
5、设置监听,让套接字由主动变为被动接收
6、接受客户端连接 定义函数 request_handler()
7、接收客户端浏览器发送的请求协议
8、判断协议是否为空
9、拼接响应的报文
10、发送响应报文
11、关闭操作
- 运行python web服务器 浏览器进行访问(我设置的端口号为8081)
即可展现如下图的hello world
定义主函数main()
1、导入套接字模块(socket)
2、创建套接字
import socket
# 参数
# socket.AF_INET --- IPV4
# socket.SOCK_STREAM --- tcp
tcp_server_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
3、设置地址重用
# 当前套接字 地址重用 值True
tcp_server_socket.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, True)
4、绑定端口
5、设置监听,让套接字由主动变为被动接收
tcp_server_socket.bind(("", 8081))
tcp_server_socket.listen(128)
6、接受客户端连接 定义函数 request_handler()
7、接收客户端浏览器发送的请求协议
8、判断协议是否为空
9、拼接响应的报文
10、发送响应报文
request_handler()
即为接收客户端(浏览器)的发出的请求并作出相应
def request_handler(new_client_socket, ip_port):
"""接收信息,并且做出响应"""
# 7、接收客户端浏览器发送的请求协议
request_data = new_client_socket.recv(1024)
# print(request_data)
# 8、判断协议是否为空
if not request_data:
print("%s客户端已经下线!" % str(ip_port))
new_client_socket.close()
return
# 拼接响应的报文
# 1-- 响应行
response_line = "HTTP/1.1 200 OK\r\n"
# 2-- 响应头
response_header = "Server:Python20WS/2.1\r\n"
# 3-- 响应空行
response_blank = "\r\n"
# 4-- 响应的主体
response_body = "HelloWorld!"
response_data = response_line + response_header + response_blank + response_body
# 10、发送响应报文
new_client_socket.send(response_data.encode())
# 11、关闭当前连接
new_client_socket.close()
- 完整代码如下
import socket
def request_handler(new_client_socket, ip_port):
"""接收信息,并且做出响应"""
request_data = new_client_socket.recv(1024)
if not request_data:
print("%s客户端已经下线!" % str(ip_port))
new_client_socket.close()
return
# 响应报文
response_line = "HTTP/1.1 200 OK\r\n"
response_header = "Server:Python20WS/2.1\r\n"
response_blank = "\r\n"
response_body = "HelloWorld!"
response_data = response_line + response_header + response_blank + response_body
# 发送响应报文
new_client_socket.send(response_data.encode())
# 关闭当前连接
new_client_socket.close()
def main():
"""主函数"""
# 创建套接字
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(("", 8081))
# 设置监听,让套接字由主动变为被动接收
tcp_server_socket.listen(128)
# 接受客户端连接 定义函数 request_handler()
while True:
new_client_socket, ip_port = tcp_server_socket.accept()
print("新客户来了:", ip_port)
# 调用功能函数处理请求并且响应
request_handler(new_client_socket, ip_port)
# 11、关闭操作
# tcp_server_socket.close()
if __name__ == '__main__':
main()