python 编写简单网页服务器的实例


Posted in Python onJune 01, 2018

IDE:Pycharm

sever.py

#!/bin/python
#-*- coding: UTF-8 -*-
#文件名:server.py
#create by wzh 2017/10/26
import socket #导入socket模块
import re
from multiprocessing import Process #导入进程模块
#设置静态文件根目录
HTML_ROOT_DIR='./html'
def handle_client(client_socket):
 """处理客户端连接请求"""
 request_data=client_socket.recv(1024)
 print(request_data)
 request_lines=request_data.splitlines()
 for line in request_lines:
  print(line)
 #'GET / HTTP/1.1'
 request_start_line=request_lines[0].decode("utf-8")
 print("*"*10)
 print(request_start_line)
 #提取用户请求的文件名
 file_name=re.match(r"\w+ +(/[^ ]*) ",str(request_start_line)).group(1)
 if "/" == file_name:
  file_name='/index.html'
 #打开文件,读取内容
 try:
  file=open(HTML_ROOT_DIR+file_name,"rb")
 except IOError:
  response_start_line="HTTP/1.1 404 Not Found\r\n"
  response_heads="Server: My server\r\n"
  response_body="The file not found!"
 else:
  file_data=file.read()
  file.close()
  response_start_line="HTTP/1.1 200 ok\r\n"
  response_heads="Server: My server\r\n"
  response_body=file_data.decode("utf-8")
 response=response_start_line+response_heads+"\r\n"+response_body
 print("response data:",response)
 client_socket.send(bytes(response,"utf-8"))
 client_socket.close()
if __name__=="__main__":   #如果直接运行本文件,那么__name__为__main__(此时才运行下面的程序),否则为对应包名
 s = socket.socket(socket.AF_INET,socket.SOCK_STREAM) # 创建socket对象
 s.setsockopt(socket.SOL_SOCKET,socket.SO_REUSEADDR,1)
 #host = socket.gethostname() # 获取本地主机名
 port = 1212 #
 #print(host)
 s.bind(("", port)) # 绑定端口
 s.listen(5)
 while True:
  c,addr=s.accept() #建立客户端连接
  print('连接地址',addr)
  handle_client_process=Process(target=handle_client,args=(c,)) #ALT+ENTER快捷键生成函数
  handle_client_process.start()
  c.close()

index.html

<!DOCTYPE html>
<html lang="en">
<head>
 <meta charset="UTF-8">
 <title>My Web</title>
</head>
<h1 align="center">welcome!</h1>
<p align="center">这是一个神奇的网站!</p>
<body>
</body>
</html>

运行server.py

在浏览器中输入localhost:1212

以上这篇python 编写简单网页服务器的实例就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

Python 相关文章推荐
python33 urllib2使用方法细节讲解
Dec 03 Python
Python中列表、字典、元组、集合数据结构整理
Nov 20 Python
Python的Urllib库的基本使用教程
Apr 30 Python
Python常用的爬虫技巧总结
Mar 28 Python
利用Python进行异常值分析实例代码
Dec 07 Python
Tensorflow训练模型越来越慢的2种解决方案
Feb 07 Python
基于python实现百度语音识别和图灵对话
Nov 02 Python
python 使用cycle构造无限循环迭代器
Dec 02 Python
MoviePy常用剪辑类及Python视频剪辑自动化
Dec 18 Python
简述python四种分词工具,盘点哪个更好用?
Apr 13 Python
pandas求平均数和中位数的方法实例
Aug 04 Python
python blinker 信号库
May 04 Python
Django中间件实现拦截器的方法
Jun 01 #Python
Python使用add_subplot与subplot画子图操作示例
Jun 01 #Python
详解Python如何生成词云的方法
Jun 01 #Python
Python实现的个人所得税计算器示例
Jun 01 #Python
Python模拟登录的多种方法(四种)
Jun 01 #Python
Python使用re模块正则提取字符串中括号内的内容示例
Jun 01 #Python
Python爬虫获取图片并下载保存至本地的实例
Jun 01 #Python
You might like
改德生G88 - 加装等响度低音提升电路
2021/03/02 无线电
PHP中isset与array_key_exists的区别实例分析
2015/06/02 PHP
自制PHP框架之设计模式
2017/05/07 PHP
Laravel中七个非常有用但很少人知道的Carbon方法
2017/09/21 PHP
PHP+mysql防止SQL注入的方法小结
2019/04/27 PHP
在Laravel中实现使用AJAX动态刷新部分页面
2019/10/15 PHP
javascript实现unicode和字符的互相转换
2007/07/18 Javascript
jQuery 学习第五课 Ajax 使用说明
2010/05/17 Javascript
js判断是否为数组的函数: isArray()
2011/10/30 Javascript
jquery序列化表单去除指定元素示例代码
2014/04/10 Javascript
基于jQuery实现的仿百度首页滑动选项卡效果代码
2015/11/16 Javascript
javascript图片预加载完整实例
2015/12/10 Javascript
基于node.js制作简单爬虫教程
2017/06/29 Javascript
jQuery上传插件webupload使用方法
2017/08/01 jQuery
bootstrap中日历范围选择插件daterangepicker的使用详解
2018/04/17 Javascript
Vue的watch和computed方法的使用及区别介绍
2018/09/06 Javascript
vue配置font-awesome5的方法步骤
2019/01/27 Javascript
压缩Vue.js打包后的体积方法总结(Vue.js打包后体积过大问题)
2020/02/03 Javascript
[02:12]Dota 2 推出全新英雄—— 电炎绝手
2019/08/23 DOTA
python迭代器实例简析
2014/09/25 Python
Python爬虫实例_利用百度地图API批量获取城市所有的POI点
2018/01/10 Python
一道python走迷宫算法题
2018/01/22 Python
python解决字符串倒序输出的问题
2018/06/25 Python
十行代码使用Python写一个USB病毒
2019/06/21 Python
Ubuntu+python将nii图像保存成png格式
2019/07/18 Python
Python读取JSON数据操作实例解析
2020/05/18 Python
Python drop方法删除列之inplace参数实例
2020/06/27 Python
python 获取剪切板内容的两种方法
2020/11/28 Python
基于Modernizr 让网站进行优雅降级的分析
2013/04/21 HTML / CSS
HTML5 weui使用笔记
2019/11/21 HTML / CSS
应届生自我鉴定
2013/12/11 职场文书
家长学校工作方案
2014/05/07 职场文书
2014院党委领导班子对照检查材料思想汇报
2014/09/24 职场文书
2015小学教育教学工作总结
2015/07/21 职场文书
python 通过使用Yolact训练数据集
2021/04/06 Python
HTML中实现音乐或视频自动播放案例详解
2022/05/30 HTML / CSS