---恢复内容开始---

#主入口,Python解释器从这开始执行;
if __name__ == '__main__':
run()

内部执行过程:

#引用socket模块
import socket def f1(request):
"""
处理用户请求,并返回相应的内容
:param request: 用户请求的所有信息
:return:
"""
f = open('index.fsw','rb')
data = f.read()
f.close()
return data def f2(request):
f = open('aricle.tpl','rb')
data = f.read()
f.close()
return data #将url与处理函数映射成对
routers = [
('/xxx', f1),
('/ooo', f2),
] def run():
#创建socket
sock = socket.socket()
#绑定端口和IP
sock.bind(('127.0.0.1',8080))
#监听端口
sock.listen(5) while True:
conn,addr = sock.accept() # hang住
# 有人来连接了
# 获取用户发送的数据
data = conn.recv(8096)
#将数据转成字符串处理
data = str(data,encoding='utf-8')
#拆分数据头和数据内容
headers,bodys = data.split('\r\n\r\n')
temp_list = headers.split('\r\n')
#数据头包含方法、url、协议
method,url,protocal = temp_list[0].split(' ')
#返回状态码
conn.send(b"HTTP/1.1 200 OK\r\n\r\n") func_name = None
#根据接收的url,查询对应的函数名称
for item in routers:
if item[0] == url:
func_name = item[1]
break
#调用对应的函数返回请求的数据
if func_name:
response = func_name(data)
else:
response = b""
#发送请求的数据
conn.send(response)
#关闭连接
conn.close()

在浏览器中输入:http://127.0.0.1:8080/xxx

得到如下数据:

GET /xxx HTTP/1.1
Host: 127.0.0.1:8080
Connection: keep-alive
Cache-Control: max-age=0
Upgrade-Insecure-Requests: 1
User-Agent: Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/73.0.3642.0 Safari/537.36
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8
Accept-Encoding: gzip, deflate, br
Accept-Language: zh-CN,zh;q=0.9

显示的界面如下所示:

<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title></title>
</head>
<body>
<h1>用户登录</h1>
<form>
<p><input type="text" placeholder="用户名" /></p>
<p><input type="password" placeholder="密码" /></p>
</form>
</body>
</html> index.fsw的内容

最新文章

  1. 【caffe】无法找到gpu/mxGPUArray.h: No such file or directory
  2. 深入理解C++虚函数表
  3. php进制转换函数
  4. 北京市小升初 zz
  5. Windows2008 Patching(打补丁)
  6. 《C#高级编程》之泛型--1创建泛型类
  7. DevExpress VCL 一键安装工具
  8. calltree看代码调用图
  9. android APP 中微信分享功能实现 的总结
  10. 用了TextMate才知道什么叫神级Editor
  11. 终端中出现While executing gem ... (Errno::EPERM) Operation not permitted - /usr/bin/pod错误的修改方法
  12. CAS实现单点登录
  13. jquery 3.4.0
  14. Android 网络编程之最新OKHTTP:3.9.0
  15. flannel
  16. ssh三大框架整合
  17. Jquery的Ajax中contentType和dataType的区别(转载)
  18. ring0获取指定进程的PEB
  19. [GO]结构体成员的使用:普通变量
  20. java中double类型显示两个小数,比如12.00

热门文章

  1. Asp.net core Identity + identity server + angular 学习笔记 (第一篇)
  2. Phpstorm-远程连接服务器实时编辑代码
  3. photoKit使用笔记
  4. Java开源框架知识整理
  5. java知识随笔
  6. 未在本地计算机上注册microsoft.ace.12.0的解决办法
  7. win10php环境变量配置(xampp环境)
  8. 苹果手机的SB系列(3)超级烦人的账户解锁?
  9. Webpack学习-工作原理(上)
  10. 将一个js项目改造成vue项目