本文实例为大家分享了Python Web静态服务器的具体代码,供大家参考,具体内容如下
功能:用户访问服务器可以返回指定页面
步骤:
1。创建服务器类
2.创建初始化服务器配置方法
3.创建接收客户端请求的方法
4 .创建发送响应报文给客户端方法
进口套接字 进口再保险 进口多处理 # Http服务器类 类HttpServer: #初始化属性 def __init__(自我): #创建套接字 自我。tcp_server_socket=socket.socket(插座。AF_INET socket.SOCK_STREAM) #设置地址重用 self.tcp_server_socket.setsockopt(套接字。SOL_SOCKET,插座。SO_REUSEADDR,真的) #绑定端口 self.tcp_server_socket。绑定((" ",8080)) #设置监听,最多建立128个连接 self.tcp_server_socket.listen (128) def开始(自我): 而真正的: #接收客户端信息 client_socket ip_port=self.tcp_server_socket.accept () 打印(“新用户:“,ip_port,“已连接的) #创建新进程,给客户端返回响应报文 t1=multiprocessing.Process(目标=自我。recv_msg args=(client_socket ip_port)) #启动进程 t1.start () #关闭客户端套接字(多进程不共享资源,故先后需要关闭两次套接字) client_socket.close () #发送消息方法 @staticmethod def recv_msg (client_socket ip_port): #接收客户端请求报文 client_text=client_socket.recv (1024) 如果不是client_text: 打印(“客户端”,ip_port”已下线”) client_socket.close () 返回 #请求报文解码 client_text_str=client_text.decode () 打印(client_text_str) #将请求报文切割 client_list=client_text_str.split (“\ r \ n”) #正则匹配出请求路径 ret=re.search (r“\(. *) \年代”,client_list [0]) print (ret.group ()) #匹配不到则请求报文错误 如果不是遗憾: 打印(“用户请求报文格式错误!”) client_socket.close () 返回 #得到路径 path_info=ret.group (1) #设置默认路径 如果path_info==?? path_info='/index . html ' 打印(“接收到用户请求:“,path_info) #响应头 response_header="服务器:Python-Web1.0 \ r \ n” #响应空行 response_blank=" \ r \ n " 试一试: #读取指定路径文件,并且返回 张开('网络' + path_info, rb)文件: #读取文件的二进制数据 response_content=以() 404 #找不到路径则返回错误 除了例外e: #开始拼接响应数据 response_line=癏TTP/1.1 404 Not Found \ r \ n” response_content="错误! ! !% s % str (e) response_content=response_content.encode () 其他: #开始拼接响应数据 response_line=癏TTP/1.1 200 OK \ r \ n” #拼接响应头 response_data=https://www.yisu.com/zixun/(response_line + response_header + response_blank) .encode () + response_content #发送数据 client_socket.send (response_data) #关闭套接字 client_socket.close () if __name__==癬_main__”: http1=HttpServer () http1.start ()
直接结果:可以正确的返回客户端请求的页面
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。