使用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使用str & repr转换字符串
Oct 13 Python
Python字典操作详细介绍及字典内建方法分享
Jan 04 Python
Python实现绘制双柱状图并显示数值功能示例
Jun 23 Python
Python爬虫框架Scrapy基本用法入门教程
Jul 26 Python
python 解压pkl文件的方法
Oct 25 Python
详解Python3网络爬虫(二):利用urllib.urlopen向有道翻译发送数据获得翻译结果
May 07 Python
django formset实现数据表的批量操作的示例代码
Dec 06 Python
python如何通过pyqt5实现进度条
Jan 20 Python
如何使用scrapy中的ItemLoader提取数据
Sep 30 Python
python字典通过值反查键的实现(简洁写法)
Sep 30 Python
Django实现drf搜索过滤和排序过滤
Jun 21 Python
详解python的异常捕获
Mar 03 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
玩转图像函数库―常见图形操作
2006/09/03 PHP
用PHP编程开发“虚拟域名”系统
2006/10/09 PHP
php2html php生成静态页函数
2008/12/08 PHP
PHP扩展编写点滴 技巧收集
2010/03/09 PHP
php脚本运行时的超时机制详解
2016/02/17 PHP
PHP session 会话处理函数
2016/06/06 PHP
javascript下给元素添加事件的方法与代码
2007/08/13 Javascript
JavaScript 原型继承
2011/12/26 Javascript
JavaScript限定复选框的选择个数示例代码
2013/08/25 Javascript
event对象获取方法总结在google浏览器下测试
2013/11/03 Javascript
jquery获得keycode的示例代码
2013/12/30 Javascript
jQuery实现图片左右滚动特效
2020/04/20 Javascript
利用jQuery实现漂亮的圆形进度条倒计时插件
2015/09/30 Javascript
jQuery实现的网页左侧在线客服效果代码
2015/10/23 Javascript
JavaScript统计网站访问次数的实现代码
2015/11/18 Javascript
Bootstrap零基础入门教程(二)
2016/07/18 Javascript
jQuery滑动到底部加载下一页数据的实例代码
2017/05/22 jQuery
Bootstrap Table从零开始
2017/06/30 Javascript
原生JS实现图片无缝滚动方法(附带封装的运动框架)
2017/10/01 Javascript
详解Koa中更方便简单发送响应的方式
2018/07/20 Javascript
js实现多个倒计时并行 js拼团倒计时
2019/02/25 Javascript
jquery实现掷骰子小游戏
2019/10/24 jQuery
js防抖函数和节流函数使用场景和实现区别示例分析
2020/04/11 Javascript
python简单判断序列是否为空的方法
2015/06/30 Python
Python增量循环删除MySQL表数据的方法
2016/09/23 Python
Python实现的简单计算器功能详解
2018/08/25 Python
用python写一个定时提醒程序的实现代码
2019/07/22 Python
kafka监控获取指定topic的消息总量示例
2019/12/23 Python
个人简历的自荐信
2013/10/23 职场文书
开业主持词
2014/03/21 职场文书
2014年医学生毕业自我鉴定
2014/03/26 职场文书
小学五年级学生评语
2014/04/22 职场文书
营销总经理岗位职责范本
2014/09/02 职场文书
2014酒店客房部工作总结
2014/12/16 职场文书
毕业生就业推荐表自我鉴定
2019/06/20 职场文书
Mysql binlog日志文件过大的解决
2021/10/05 MySQL