使用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 实现文件的递归拷贝实现代码
Aug 02 Python
python网络编程学习笔记(六):Web客户端访问
Jun 09 Python
用python代码做configure文件
Jul 20 Python
Python实现提取谷歌音乐搜索结果的方法
Jul 10 Python
对python csv模块配置分隔符和引用符详解
Dec 12 Python
谈一谈基于python的面向对象编程基础
May 21 Python
在windows下使用python进行串口通讯的方法
Jul 02 Python
Pytorch evaluation每次运行结果不同的解决
Jan 02 Python
django xadmin中form_layout添加字段显示方式
Mar 30 Python
Python基于Twilio及腾讯云实现国际国内短信接口
Jun 18 Python
Python接口自动化测试的实现
Aug 28 Python
matplotlib之pyplot模块坐标轴标签设置使用(xlabel()、ylabel())
Feb 22 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
Windows下PHP5和Apache的安装与配置
2006/09/05 PHP
smarty获得当前url的方法分享
2014/02/14 PHP
DEDE实现转跳属性文档在模板上调用出转跳地址
2016/11/04 PHP
PHP中list方法用法示例
2016/12/01 PHP
js setattribute批量设置css样式
2009/11/26 Javascript
Javascript Function对象扩展之延时执行函数
2010/07/06 Javascript
使用Java实现简单的server/client回显功能的方法介绍
2013/05/03 Javascript
简单常用的幻灯片播放实现代码
2013/09/25 Javascript
原生js和jquery实现图片轮播特效
2015/04/23 Javascript
JavaScript实现带播放列表的音乐播放器实例分享
2016/03/07 Javascript
AngularJS自定义服务与fliter的混合使用
2016/11/24 Javascript
JS定时检测任务任务完成后执行下一步的解决办法
2016/12/22 Javascript
JavaScript文件的同步和异步加载的实现代码
2017/08/19 Javascript
JavaScript中关于class的调用方法
2017/11/28 Javascript
微信小程序使用request网络请求操作实例
2017/12/15 Javascript
Vuex实现计数器以及列表展示效果
2018/03/10 Javascript
angular6.0使用教程之父组件通过url传递id给子组件的方法
2018/06/30 Javascript
JS的Ajax与后端交互数据的实例
2018/08/08 Javascript
js中数组对象去重的两种方法
2019/01/18 Javascript
Vue 列表上下过渡效果的实例代码
2019/06/25 Javascript
layui form.render('select', 'test2') 更新渲染的方法
2019/09/27 Javascript
jquery实现商品sku多属性选择功能(商品详情页)
2019/12/20 jQuery
Vuex实现购物车小功能
2020/08/17 Javascript
[01:00:44]DOTA2上海特级锦标赛主赛事日 - 3 败者组第三轮#1COL VS Alliance第三局
2016/03/04 DOTA
python网络编程学习笔记(五):socket的一些补充
2014/06/09 Python
Python 实现数据库更新脚本的生成方法
2017/07/09 Python
pycharm 实现显示project 选项卡的方法
2019/01/17 Python
python TF-IDF算法实现文本关键词提取
2019/05/29 Python
详解HTML5 Canvas标签及基本使用
2020/01/10 HTML / CSS
俄罗斯旅游网站:Tripadvisor俄罗斯
2017/03/21 全球购物
化学教学随笔感言
2014/02/19 职场文书
我的梦想演讲稿500字
2014/08/21 职场文书
房地产财务经理岗位职责
2015/04/08 职场文书
房屋质量投诉书
2015/07/02 职场文书
2016年社区“我们的节日·中秋节”活动总结
2016/04/05 职场文书
python爬虫selenium模块详解
2021/03/30 Python