http服务器的简单使用
来源:互联网 发布:android c语言开发 编辑:程序博客网 时间:2024/06/02 03:22
import socketimport reimport multiprocessingSERVE_PORT = (ip, port) = "", 7788DUCUMENT_ROOT = "./html"class Server(object): def __init__(self,adree): self.listen_socket=socket.socket(socket.AF_INET,socket.SOCK_STREAM) self.listen_socket.setsockopt(socket.SOL_SOCKET,socket.SO_REUSEADDR,1) self.listen_socket.bind(adree) self.listen_socket.listen(128) def hanle_socket(self): # 建立进程 while True: client_socket,client_adree=self.listen_socket.accept() pro=multiprocessing.Process(target=self.server_socket,args=(client_socket,)) pro.start() def server_socket(self,client_socket): # 客户端服务 GET / HTTP/1.1 recvdata=client_socket.recv(4096).decode("utf-8") # request_lines=recvdata.splitlines() # request_line=request_lines[0] # print(request_line) # filename=re.match(r"[^/]+(/[^ ]*)",request_line).group(1) filename=re.match(r"\w* (/\S*)",recvdata).group(1) if filename=="/": filename=DUCUMENT_ROOT+"/index.html" else: filename=DUCUMENT_ROOT+filename try: f = open(filename, "rb") except IOError as a: response_headers="HTTP/1.1 400 not found\r\n" response_headers+="\r\n" response_body="no found\r\n" # data = response_headers + "\r\n" + response_body # print(a) else: response_headers = "HTTP/1.1 200 ok\r\n" response_headers += "\r\n" response_body = f.read().decode("utf-8") f.close() finally: data=response_headers+"\r\n"+response_body client_socket.send(data.encode("utf-8")) client_socket.close()def main(): http=Server(SERVE_PORT) http.hanle_socket()if __name__ == '__main__': main()
阅读全文
0 0
- http服务器的简单使用
- 用go使用简单的http服务器
- 简单的http服务器
- python 简单的Http服务器
- 一个简单的Http服务器
- 简单的http服务器源码
- 实现简单的HTTP服务器
- twisted05 简单的http服务器
- 两个简单的http服务器
- HTTP服务器的简单实现
- 简单的http服务器java
- 一个简单的HTTP服务器
- HTTP服务器的简单实现
- 搭建简单的http服务器
- 使用Java socket简单模拟HTTP服务器
- 使用Python搭建简单Http服务器
- 使用Java语言实现简单HTTP服务器
- 一个简单的http服务器的实现
- OpenCV检测篇(二) ——笑脸检测
- C++ cout输出格式化(1)
- ESP8266擦除flash
- hadoop 2.x yarn 的工作机制
- Gensim Word2vec 使用教程
- http服务器的简单使用
- selenium登录知乎并且输出一些首页的标题demo
- 依赖注入 Dependency Injection (DI)
- 这些年我原来是做系统和协议的
- spring-boot怎么更改默认的端口号
- 执行mysql添加权限语法,报错提示:ERROR 1558 (HY000): Column count of mysql.user is wrong. Expected 42, found 39. C
- CDH 升级到5.12 /etc/alternatives 仍然指向旧版本的CDH
- android studio中,拉下分支,修改包名和相关信息之后,工程类名标红,不报错,也可以编译运行,怎么回事?
- ViewPager+Fragment使用FragmentPageAdapter时app与v4下FragmentManager冲突的解决