使用python 写一个静态服务(实战)


Posted in Python onJune 28, 2019

师父布置的任务,让我写一个服务练练手,搞清楚socket的原理和过程后跑了一个小demo,很有成就感,代码内容也比较清晰易懂,很有教育启发意义。

代码

# coding:utf-8
import socket
from multiprocessing import Process

HTML_ROOT_DIR = ""


def handle_client(client_socket):
  """处理客户端请求"""
  # 获取客户端请求数据
  request_data = client_socket.recv(1024)
  print("request data:", request_data)

  # 构造响应数据
  response_start_line = "HTTP/1.1 200 OK\r\n"
  response_headers = "Server: My server\r\n"
  response_body = "hello itcast"
  response = response_start_line + response_headers + "\r\n" + response_body
  print("response data:", response)

  # 向客户端返回响应数据
  client_socket.send(bytes(response, "utf-8"))

  # 关闭客户端连接
  client_socket.close()


if __name__=="__main__":
  server_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
  server_socket.bind(("", 8000))
  server_socket.listen(120)

  while True:
    client_socket, client_address = server_socket.accept()
    # print("[%s, %s]用户连接上了"%client_addrest[0],client_address[1])
    print("[%s, %s]用户连接上了" % client_address)
    handle_client_process = Process(target=handle_client, args=(client_socket,))
    handle_client_process.start()
    client_socket.close()

运行后在浏览器输入:127.0.0.1:8000

http页面显示如下:

使用python 写一个静态服务(实战)

控制台输出:

[127.0.0.1, 50066]用户连接上了
request data: b'GET / HTTP/1.1\r\nHost: 127.0.0.1:8000\r\nUpgrade-Insecure-Requests: 1\r\nAccept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8\r\nUser-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_13_1) AppleWebKit/604.3.5 (KHTML, like Gecko) Version/11.0.1 Safari/604.3.5\r\nAccept-Language: zh-cn\r\nAccept-Encoding: gzip, deflate\r\nConnection: keep-alive\r\n\r\n'
response data: HTTP/1.1 200 OK
Server: My server

hello itcast
[127.0.0.1, 50067]用户连接上了
request data: b'GET /favicon.ico HTTP/1.1\r\nHost: 127.0.0.1:8000\r\nConnection: keep-alive\r\nAccept: */*\r\nUser-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_13_1) AppleWebKit/604.3.5 (KHTML, like Gecko) Version/11.0.1 Safari/604.3.5\r\nAccept-Language: zh-cn\r\nReferer: http://127.0.0.1:8000/\r\nAccept-Encoding: gzip, deflate\r\n\r\n'
response data: HTTP/1.1 200 OK
Server: My server

hello itcast

以上这篇使用python 写一个静态服务(实战)就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

Python 相关文章推荐
用python实现批量重命名文件的代码
May 25 Python
Pandas 同元素多列去重的实例
Jul 03 Python
利用Python将文本中的中英文分离方法
Oct 31 Python
python RabbitMQ 使用详细介绍(小结)
Nov 08 Python
深入解析python中的实例方法、类方法和静态方法
Mar 11 Python
django 使用全局搜索功能的实例详解
Jul 18 Python
python__name__原理及用法详解
Nov 02 Python
Python Tornado实现WEB服务器Socket服务器共存并实现交互的方法
May 26 Python
python3.7+selenium模拟淘宝登录功能的实现
May 26 Python
Keras在训练期间可视化训练误差和测试误差实例
Jun 16 Python
python爬虫请求库httpx和parsel解析库的使用测评
May 10 Python
Pyqt5将多个类组合在一个界面显示的完整示例
Sep 04 Python
python适合人工智能的理由和优势
Jun 28 #Python
python画图的函数用法以及技巧
Jun 28 #Python
使用python爬取微博数据打造一颗“心”
Jun 28 #Python
详解python和matlab的优势与区别
Jun 28 #Python
python中while和for的区别总结
Jun 28 #Python
python脚本当作Linux中的服务启动实现方法
Jun 28 #Python
如何用Python制作微信好友个性签名词云图
Jun 28 #Python
You might like
全国FM电台频率大全 - 23 四川省
2020/03/11 无线电
Discuz! 5.0.0论坛程序中加入一段js代码,让会员点击下载附件前自动弹出提示窗口
2007/04/18 PHP
php面向对象全攻略 (十二) 抽象方法和抽象类
2009/09/30 PHP
6个超实用的PHP代码片段
2015/08/10 PHP
在WordPress中使用PHP脚本来判断访客来自什么国家
2015/12/10 PHP
Smarty分页实现方法完整实例
2016/05/11 PHP
yii2项目实战之restful api授权验证详解
2017/05/20 PHP
PHP中命名空间的使用例子
2019/03/22 PHP
自动刷新网页,自动刷新当前页面,JS调用
2013/06/24 Javascript
JavaScript 正则表达式中global模式的特性
2016/02/25 Javascript
JS组件Bootstrap Select2使用方法解析
2016/05/30 Javascript
浅谈DOCTYPE对$(window).height()取值的影响
2016/07/21 Javascript
nodejs学习笔记之路由
2017/03/27 NodeJs
vue开发调试神器vue-devtools使用详解
2017/07/13 Javascript
vuex学习之Actions的用法详解
2017/08/29 Javascript
去掉vue 中的代码规范检测两种方法(Eslint验证)
2018/03/21 Javascript
vue-cli3 从搭建到优化的详细步骤
2019/01/20 Javascript
vue-router 起步步骤详解
2019/03/26 Javascript
vue 避免变量赋值后双向绑定的操作
2020/11/07 Javascript
JavaScript实现点击自制菜单效果
2021/02/02 Javascript
Caffe均值文件mean.binaryproto转mean.npy的方法
2018/07/09 Python
详解Python字典小结
2018/10/20 Python
python 求1-100之间的奇数或者偶数之和的实例
2019/06/11 Python
Pytorch 中retain_graph的用法详解
2020/01/07 Python
Python ArgumentParse的subparser用法说明
2020/04/20 Python
斯图尔特·韦茨曼鞋加拿大官网:Stuart Weitzman加拿大
2019/10/13 全球购物
Gerry Weber德国官网:优质女性时装,德国最大的时装公司之一
2019/11/02 全球购物
初中新生军训方案
2014/05/13 职场文书
赢在中国观后感
2015/06/02 职场文书
在职证明格式样本
2015/06/15 职场文书
青年志愿者活动感想
2015/08/07 职场文书
2016毕业实习单位评语大全
2015/12/01 职场文书
apache基于端口创建虚拟主机的示例
2021/04/24 Servers
MySQL中你可能忽略的COLLATION实例详解
2021/05/12 MySQL
Redis实战高并发之扣减库存项目
2022/04/14 Redis
python可视化分析绘制带趋势线的散点图和边缘直方图
2022/06/25 Python