使用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设置socket代理的方法
Jan 14 Python
解读Python中degrees()方法的使用
May 18 Python
python登录豆瓣并发帖的方法
Jul 08 Python
Python 加密与解密小结
Dec 06 Python
python 含子图的gif生成时内存溢出的方法
Jul 07 Python
Python实现Singleton模式的方式详解
Aug 08 Python
opencv python如何实现图像二值化
Feb 03 Python
在Anaconda3下使用清华镜像源安装TensorFlow(CPU版)
Apr 19 Python
PyCharm中如何直接使用Anaconda已安装的库
May 28 Python
Python sqlalchemy时间戳及密码管理实现代码详解
Aug 01 Python
python操作toml文件的示例代码
Nov 27 Python
python中delattr删除对象方法的代码分析
Dec 15 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实现mysql同步的实现方法
2009/10/21 PHP
分享ThinkPHP3.2中关联查询解决思路
2015/09/20 PHP
PHP函数按引用传递参数及函数可选参数用法示例
2018/06/04 PHP
laravel-admin 在列表页添加自定义按钮的例子
2019/09/30 PHP
一些不错的js函数ajax
2008/08/20 Javascript
window.navigate 与 window.location.href 的使用区别介绍
2013/09/21 Javascript
JS中数组Array的用法示例介绍
2014/02/20 Javascript
node.js中的path.isAbsolute方法使用说明
2014/12/08 Javascript
JavaScript获取网页表单action属性的方法
2015/04/02 Javascript
js实现分享到随页面滚动而滑动效果的方法
2015/04/10 Javascript
JavaScript动态添加css样式和script标签
2016/07/19 Javascript
详解jQuery中基本的动画方法
2016/12/14 Javascript
setTimeout函数的神奇使用
2017/02/26 Javascript
bootstrap suggest下拉框使用详解
2017/04/10 Javascript
Bootstrap模态框插件使用详解
2017/05/11 Javascript
基于D3.js实现时钟效果
2018/07/17 Javascript
Vue CLI3 如何支持less的方法示例
2018/08/29 Javascript
vue实现带过渡效果的下拉菜单功能
2020/02/19 Javascript
[40:04]Secret vs Infamous 2019国际邀请赛淘汰赛 败者组 BO3 第二场 8.23
2019/09/05 DOTA
python写的一个squid访问日志分析的小程序
2014/09/17 Python
Python读写unicode文件的方法
2015/07/10 Python
使用Python来编写HTTP服务器的超级指南
2016/02/18 Python
详解Python中的from..import绝对导入语句
2016/06/21 Python
Python3中类、模块、错误与异常、文件的简易教程
2017/11/20 Python
Python机器学习k-近邻算法(K Nearest Neighbor)实例详解
2018/06/25 Python
关于Flask项目无法使用公网IP访问的解决方式
2019/11/19 Python
tensorflow实现训练变量checkpoint的保存与读取
2020/02/10 Python
新手入门学习python Numpy基础操作
2020/03/02 Python
Pycharm导入anaconda环境的教程图解
2020/07/31 Python
斯洛伐克香水和化妆品购物网站:Parfemy-Elnino.sk
2020/01/28 全球购物
澳大利亚家具商店:Freedom
2020/12/17 全球购物
酒店销售经理岗位职责
2015/04/02 职场文书
ORACLE数据库对long类型字段进行模糊匹配的解决思路
2021/04/07 Oracle
CSS实现章节添加自增序号的方法
2021/06/23 HTML / CSS
Go gorilla/sessions库安装使用
2022/08/14 Golang
mysql数据库如何转移到oracle
2022/12/24 MySQL