使用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 相关文章推荐
Windows8下安装Python的BeautifulSoup
Jan 22 Python
python爬虫入门教程--正则表达式完全指南(五)
May 25 Python
Python编程二分法实现冒泡算法+快速排序代码示例
Jan 15 Python
python学生管理系统开发
Jan 30 Python
Python常见的pandas用法demo示例
Mar 16 Python
浅谈python常用程序算法
Mar 22 Python
Python3 翻转二叉树的实现
Sep 30 Python
Python集合操作方法详解
Feb 09 Python
wxpython自定义下拉列表框过程图解
Feb 14 Python
python Paramiko使用示例
Sep 21 Python
谈谈python垃圾回收机制
Sep 27 Python
python自动生成sql语句的脚本
Feb 24 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
Yii2主题(Theme)用法详解
2016/07/23 PHP
php curl上传、下载、https登陆实现代码
2017/07/23 PHP
php中数组最简单的使用方法
2020/12/27 PHP
RR vs IO BO3 第二场2.13
2021/03/10 DOTA
再次更新!MSClass (Class Of Marquee Scroll通用不间断滚动JS封装类 Ver 1.6)
2007/02/05 Javascript
HTML长文本截取含有HTML代码同样适用的两种方法
2013/07/31 Javascript
什么是cookie?js手动创建和存储cookie
2014/05/27 Javascript
JavaScript学习笔记之JS事件对象
2015/01/22 Javascript
JS实现鼠标点击展开或隐藏表格行的方法
2015/03/03 Javascript
JS实现的相册图片左右滚动完整实例
2016/11/23 Javascript
vue.js绑定class和style样式(6)
2016/12/09 Javascript
JavaScript中匿名函数的递归调用
2017/01/22 Javascript
JS 中document.write()的用法和清空的原因浅析
2017/12/04 Javascript
实现jquery放大镜的两种方法
2018/02/22 jQuery
JavaScript生成指定范围随机数和随机序列的方法
2018/05/05 Javascript
详解vue 动态加载并注册组件且通过 render动态创建该组件
2019/05/30 Javascript
taro小程序添加骨架屏的实现代码
2019/11/15 Javascript
jQuery 实现扁平式小清新导航
2020/07/07 jQuery
Python实现批量修改文件名实例
2015/07/08 Python
详解Django框架中用户的登录和退出的实现
2015/07/23 Python
Python中强大的命令行库click入门教程
2016/12/26 Python
Python编程实现二分法和牛顿迭代法求平方根代码
2017/12/04 Python
python中set()函数简介及实例解析
2018/01/09 Python
python集合比较(交集,并集,差集)方法详解
2018/09/13 Python
解决pip install xxx报错SyntaxError: invalid syntax的问题
2018/11/30 Python
PyQt5根据控件Id获取控件对象的方法
2019/06/25 Python
Python列表切片常用操作实例解析
2020/03/10 Python
Python3爬虫发送请求的知识点实例
2020/07/30 Python
使用CSS3来绘制一个月食图案
2015/07/18 HTML / CSS
苹果台湾官网:Apple台湾
2019/01/05 全球购物
秋季运动会活动方案
2014/02/05 职场文书
大学生个人求职信
2014/06/02 职场文书
群教个人对照检查材料
2014/08/20 职场文书
死者家属慰问信
2015/03/24 职场文书
事业单位工作人员岗前培训心得体会
2016/01/08 职场文书
Python中OpenCV实现简单车牌字符切割
2021/06/11 Python