本文来源吾爱破解论坛
这是一个简单的web服务器, 通过socket下的tcp和python多线程实现。
没有足够的功能, 只能作为一个了解bs模式的样例。
运行:
打开浏览器,输入“localhost:1027”,即可。(首先打开服务器)
[Python] 纯文本查看 复制代码
import socket import re import threading ''' 多线程实现web服务器: # 1、新建线程; # 2、在新线程中关闭套接字 # 注:线程资源复制,套接字关闭一个就行 ''' def response(new_socket): data = new_socket.recv(1024).decode("utf-8").splitlines() print("请求: ") for item in data: print(item) ret = re.search(r'[^/]+(/[^ ]*)', data[0]) print(ret) if ret: file_name = ret.group(1) # print("*"*50, file_name) if file_name == "/": file_name = "/index.html" # 2. 返回http格式的数据,给浏览器 try: # 网页文件的路径自己设置 f = open("F:/code/python/tmp/web/HTML家政服务公司网站模板" + file_name, "rb") except: response = "HTTP/1.1 404 NOT FOUND\r\n" response += "\r\n" response += "------file not found-----" new_socket.send(response.encode("utf-8")) else: html_content = f.read() f.close() # 2.1 准备发送给浏览器的数据---header response = "HTTP/1.1 200 OK\r\n" response += "\r\n" # 2.2 准备发送给浏览器的数据---boy # response += "hahahhah" # 将response header发送给浏览器 new_socket.send(response.encode("utf-8")) # 将response body发送给浏览器 new_socket.send(html_content) # 新进程中关闭套接字 new_socket.close() def main(): # 初始化套接字 tcp_server = socket.socket(socket.AF_INET, socket.SOCK_STREAM) tcp_server.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1) # 1、绑定端口 tcp_server.bind( ('',1027)) # 2、设置监听 tcp_server.listen(128) while True: # 3、等待接收 new_server, client_adder = tcp_server.accept() #4、响应 threading.Thread( target= response,args=(new_server,)).start() #5、关闭新套接字------此处关闭会导致新套接字无法正常使用 #new_server.close() # 6、关闭服务器套接字 tcp_server.close() if __name__ == "__main__": main()
版权声明:
本站所有资源均为站长或网友整理自互联网或站长购买自互联网,站长无法分辨资源版权出自何处,所以不承担任何版权以及其他问题带来的法律责任,如有侵权或者其他问题请联系站长删除!站长QQ754403226 谢谢。
- 上一篇: (tkinter自习作)国内股票期权保证金计算器
- 下一篇: MPV播放直播视频