使用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编写Linux系统守护进程实例
Feb 03 Python
Python 实现简单的电话本功能
Aug 09 Python
浅谈编码,解码,乱码的问题
Dec 30 Python
通过Pandas读取大文件的实例
Jun 07 Python
Python实现的栈、队列、文件目录遍历操作示例
May 06 Python
pytorch 自定义数据集加载方法
Aug 18 Python
Django之模板层的实现代码
Sep 09 Python
pytorch实现mnist数据集的图像可视化及保存
Jan 14 Python
Python列表倒序输出及其效率详解
Mar 04 Python
多个版本的python共存时使用pip的正确做法
Oct 26 Python
python flappy bird小游戏分步实现流程
Feb 15 Python
详细介绍python操作RabbitMq
Apr 12 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 中常量的知识整理
2017/04/14 PHP
layui框架实现文件上传及TP3.2.3(thinkPHP)对上传文件进行后台处理操作示例
2018/05/12 PHP
XML的代替者----JSON
2007/07/21 Javascript
Javascript 解疑
2009/11/11 Javascript
js 未结束的字符串常量错误解决方法
2010/06/13 Javascript
jquery如何改变html标签的样式(两种实现方法)
2013/01/16 Javascript
跟我学Nodejs(二)--- Node.js事件模块
2014/05/21 NodeJs
js文件包含的几种方式介绍
2014/09/28 Javascript
实例讲解JQuery中this和$(this)区别
2014/12/08 Javascript
jquery实现拖拽调整Div大小
2015/01/30 Javascript
Javascript 是你的高阶函数(高级应用)
2015/06/15 Javascript
jQuery解析json数据实例分析
2015/11/24 Javascript
第一次接触神奇的Bootstrap网格系统
2016/07/27 Javascript
详细讲解JavaScript中的this绑定
2016/10/10 Javascript
Bootstrap弹出框modal上层的输入框不能获得焦点问题的解决方法
2016/12/13 Javascript
Angular实现购物车计算示例代码
2017/02/21 Javascript
AngularJS模糊查询功能实现代码(过滤内容下拉菜单排序过滤敏感字符验证判断后添加表格信息)
2017/10/24 Javascript
微信小程序使用slider设置数据值及switch开关组件功能【附源码下载】
2017/12/09 Javascript
微信小程序访问豆瓣电影api的实现方法
2019/03/31 Javascript
利用原生JS实现data方法示例代码
2019/05/28 Javascript
[52:26]完美世界DOTA2联赛决赛 FTD vs Phoenix 第一场 11.08
2020/11/11 DOTA
详解tensorflow实现迁移学习实例
2018/02/10 Python
详解Django中类视图使用装饰器的方式
2018/08/12 Python
pandas DataFrame 删除重复的行的实现方法
2019/01/29 Python
selenium跳过webdriver检测并模拟登录淘宝
2019/06/12 Python
Python多线程模块Threading用法示例小结
2019/11/09 Python
Python实现寻找回文数字过程解析
2020/06/09 Python
新手学习Python2和Python3中print不同的用法
2020/06/09 Python
Pandora德国官网:购买潘多拉手链、戒指、项链和耳环
2020/02/20 全球购物
Lookfantastic澳大利亚官网:英国知名美妆购物网站
2021/01/07 全球购物
2014年四风问题个人对照自查剖析材料
2014/09/15 职场文书
CocosCreator入门教程之网络通信
2021/04/16 Javascript
Mysql服务添加 iptables防火墙策略的方案
2021/04/29 MySQL
浅谈MySQL之浅入深出页原理
2021/06/23 MySQL
解决Laravel使用验证时跳转到首页的问题
2021/11/17 PHP
三种方式清除vue路由跳转router-link的历史记录
2022/04/10 Vue.js