使用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 相关文章推荐
简单的通用表达式求10乘阶示例
Mar 03 Python
详解python的几种标准输出重定向方式
Aug 15 Python
Python面向对象之静态属性、类方法与静态方法分析
Aug 24 Python
浅析Python函数式编程
Oct 06 Python
Python实现定期检查源目录与备份目录的差异并进行备份功能示例
Feb 27 Python
python 梯度法求解函数极值的实例
Jul 10 Python
Python中的几种矩阵乘法(小结)
Jul 10 Python
python框架Django实战商城项目之工程搭建过程图文详解
Mar 09 Python
Selenium 安装和简单使用的实现
Dec 04 Python
解决numpy数组互换两行及赋值的问题
Apr 17 Python
python 中yaml文件用法大全
Jul 04 Python
Python实战之大鱼吃小鱼游戏的实现
Apr 01 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
php出现Cannot modify header information问题的解决方法大全
2008/04/09 PHP
php学习笔记之 函数声明
2011/06/09 PHP
PHP之预定义接口详解
2015/07/29 PHP
php编程中echo用逗号和用点号连接的区别
2016/03/26 PHP
php session_decode函数用法讲解
2019/05/26 PHP
javascript 词法作用域和闭包分析说明
2010/08/12 Javascript
EasyUI 中 MenuButton 的使用方法
2012/07/14 Javascript
IFrame跨域高度自适应实现代码
2012/08/16 Javascript
键盘KeyCode值列表汇总
2013/11/26 Javascript
简述AngularJS相关的一些编程思想
2015/06/23 Javascript
JavaScript程序开发之JS代码放置的位置
2016/01/15 Javascript
如何用angularjs制作一个完整的表格
2016/01/21 Javascript
Angular-Ui-Router+ocLazyLoad动态加载脚本示例
2017/03/02 Javascript
JavaScript高阶函数_动力节点Java学院整理
2017/06/28 Javascript
教你如何编写Vue.js的单元测试的方法
2018/10/17 Javascript
详解ES6中的 Set Map 数据结构学习总结
2018/11/06 Javascript
JS实现的合并两个有序链表算法示例
2019/02/25 Javascript
详解Node.js一行命令上传本地文件到服务器
2019/04/22 Javascript
详解vue页面首次加载缓慢原因及解决方案
2019/11/06 Javascript
vue 解决文本框被键盘遮住的问题
2019/11/06 Javascript
解决vue安装less报错Failed to compile with 1 errors的问题
2020/10/22 Javascript
Python常用列表数据结构小结
2014/08/06 Python
python之yield表达式学习
2014/09/02 Python
wxPython使用系统剪切板的方法
2015/06/16 Python
3个用于数据科学的顶级Python库
2018/09/29 Python
anaconda如何查看并管理python环境
2019/07/05 Python
python多线程共享变量的使用和效率方法
2019/07/16 Python
python GUI库图形界面开发之PyQt5信号与槽机制、自定义信号基础介绍
2020/02/25 Python
python七种方法判断字符串是否包含子串
2020/08/18 Python
什么是Python包的循环导入
2020/09/08 Python
英国婴儿及儿童产品商店:TigerParrot
2019/03/04 全球购物
学习经验交流会主持词
2014/04/01 职场文书
付款证明模板
2015/06/19 职场文书
二十年同学聚会致辞
2015/07/28 职场文书
七年级英语教学反思
2016/02/15 职场文书
nginx反向代理时如何保持长连接
2021/03/31 Servers