使用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抓取网页中图片并保存到本地
Dec 01 Python
python xml.etree.ElementTree遍历xml所有节点实例详解
Dec 04 Python
Django1.9 加载通过ImageField上传的图片方法
May 25 Python
解决pytorch GPU 计算过程中出现内存耗尽的问题
Aug 19 Python
pandas数据处理进阶详解
Oct 11 Python
python使用numpy实现直方图反向投影示例
Jan 17 Python
Python如何把多个PDF文件合并代码实例
Feb 13 Python
python实现简单井字棋小游戏
Mar 05 Python
使用Python获取当前工作目录和执行命令的位置
Mar 09 Python
Python pandas对excel的操作实现示例
Jul 21 Python
如何使用python写截屏小工具
Sep 29 Python
python切片作为占位符使用实例讲解
Feb 17 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
风味层面去分析咖啡油脂
2021/03/03 咖啡文化
用PHP ob_start()控制浏览器cache、生成html实现代码
2010/02/16 PHP
浅析php中抽象类和接口的概念以及区别
2013/06/27 PHP
封装ThinkPHP的一个文件上传方法实例
2014/10/31 PHP
PHP连接SQL server数据库测试脚本运行实例
2020/08/24 PHP
jquery HotKeys轻松搞定键盘事件代码
2008/08/30 Javascript
基于jquery实现的鼠标拖拽元素复制并写入效果
2011/08/23 Javascript
Extjs单独定义各组件的实例代码
2013/06/25 Javascript
jquery实现多级下拉菜单的实例代码
2013/10/02 Javascript
Node.js 文件夹目录结构创建实例代码
2016/07/08 Javascript
JavaScript组合模式学习要点
2016/08/26 Javascript
Ionic默认的Tabs模板使用实例
2016/08/29 Javascript
微信小程序 弹窗自定义实例代码
2017/03/08 Javascript
微信小程序“摇一摇”的实例代码
2017/07/20 Javascript
基于JavaScript实现前端数据多条件筛选功能
2020/08/19 Javascript
通过js控制时间,一秒一秒自己动的实例
2017/10/25 Javascript
nodejs实现一个word文档解析器思路详解
2018/08/14 NodeJs
[50:20]DOTA2上海特级锦标赛主赛事日 - 5 总决赛Liquid VS Secret第四局
2016/03/06 DOTA
[01:13:51]TNC vs Serenity 2018国际邀请赛小组赛BO2 第二场 8.18
2018/08/19 DOTA
Python全局变量操作详解
2015/04/14 Python
matplotlib subplots 调整子图间矩的实例
2018/05/25 Python
pyqt5实现按钮添加背景图片以及背景图片的切换方法
2019/06/13 Python
详解Django定时任务模块设计与实践
2019/07/24 Python
python 递归调用返回None的问题及解决方法
2020/03/16 Python
Python通过字典映射函数实现switch
2020/11/06 Python
HTML5实现Notification API桌面通知功能
2016/03/02 HTML / CSS
Notino希腊:购买香水和美容产品
2019/07/25 全球购物
linux面试题参考答案(10)
2013/11/04 面试题
高中毕业生个人自我鉴定
2013/11/24 职场文书
优秀班主任经验交流材料
2014/06/02 职场文书
商场周年庆活动方案
2014/08/19 职场文书
小学生民族团结演讲稿
2014/08/27 职场文书
现货白银电话营销话术
2015/05/29 职场文书
python如何利用cv2模块读取显示保存图片
2021/06/04 Python
Python pygame实现中国象棋单机版源码
2021/06/20 Python
分享几个实用的CSS代码块
2022/06/10 HTML / CSS