使用浏览器访问python写的服务器程序


Posted in Python onOctober 10, 2019

代码如下所示:

import socket
import re
import multiprocessing
def service_client(client_socket):
  data = client_socket.recv(1024)
  recv_data=data.decode("utf-8")
  print(recv_data)
  #GET /index.html HTTP/1.1
  ret=re.match(r"[^/]+ /([\S]+\s|\s)",recv_data)
  file_n="index.html"
  if ret:
    if ret.group(1)!=" ":
      print(ret.group(1))
      file_n=ret.group(1)
  else:
    print("代码有误!")
  try:
    with open(file_n,"rb") as f:
      content=f.read()
      f.close()
  except Exception as r:
    print(r)
    content = "<h1>file not found<\h1>".encode("utf-8")
  header="HTTP/1.1 200 OK\r\n"
  empty="\r\n"
  response=(header+empty).encode('utf-8')
  client_socket.send(response)
  client_socket.send(content)
  client_socket.close()
  print("client_socket.close()已调用")
def main():
  tcp_socket=socket.socket(socket.AF_INET,socket.SOCK_STREAM)
  tcp_socket.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1)
  local_addr=("127.0.0.1",7788)
  tcp_socket.bind(local_addr)
  tcp_socket.listen(128)
  while True:
    client_socket, client_addr = tcp_socket.accept()
    p=multiprocessing.Process(target=service_client,args=(client_socket,))
    p.start()
    # p.join()
  tcp_socket.close()
if __name__ == "__main__":
  main()

注意:

1.开始的时候file_n没有先定义,结果就报错:local variable ‘file_n' referenced before assignment

2.正则表达式一定要先验证筛取的内容是否正确。

3.要获取程序同级文件夹中文件夹的文件,相对路基为“文件夹名/文件名”

4.tcp_socket.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1) 要加不然容易出现“address already in use"之类的故障

总结

以上所述是小编给大家介绍的使用浏览器访问python写的服务器程序,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对三水点靠木网站的支持!
如果你觉得本文对你有帮助,欢迎转载,烦请注明出处,谢谢!

Python 相关文章推荐
python里将list中元素依次向前移动一位
Sep 12 Python
Python遍历文件夹和读写文件的实现代码
Aug 28 Python
python将文本分每两行一组并保存到文件
Mar 19 Python
Python绘制3D图形
May 03 Python
Python实现输入二叉树的先序和中序遍历,再输出后序遍历操作示例
Jul 27 Python
win8下python3.4安装和环境配置图文教程
Jul 31 Python
Python Selenium 之数据驱动测试的实现
Aug 01 Python
pytorch 图像预处理之减去均值,除以方差的实例
Jan 02 Python
pytorch之ImageFolder使用详解
Jan 06 Python
基于python实现银行管理系统
Apr 20 Python
Python闭包的定义和使用方法
Apr 11 Python
python index() 与 rindex() 方法的使用示例详解
Dec 24 Python
详解Python time库的使用
Oct 10 #Python
python自动化测试无法启动谷歌浏览器问题
Oct 10 #Python
python批量将excel内容进行翻译写入功能
Oct 10 #Python
Python爬虫爬取Bilibili弹幕过程解析
Oct 10 #Python
安装python及pycharm的教程图解
Oct 10 #Python
Pytorch中的variable, tensor与numpy相互转化的方法
Oct 10 #Python
3行Python代码实现图像照片抠图和换底色的方法
Oct 10 #Python
You might like
PHP文本操作类
2006/11/25 PHP
php加速器eAccelerator的配置参数、API详解
2014/05/05 PHP
求帮忙修改个php curl模拟post请求内容后并下载文件的解决思路
2015/09/20 PHP
实例分析PHP将字符串转换成数字的方法
2019/01/27 PHP
jQuery ui1.7 dialog只能弹出一次问题
2009/08/27 Javascript
对javascript的一点点认识总结《javascript高级程序设计》读书笔记
2011/11/30 Javascript
js 幻灯片的实现
2011/12/06 Javascript
实现checkbox全选、反选、取消JavaScript小脚本异常
2014/04/10 Javascript
JavaScript学习笔记之内置对象
2015/01/22 Javascript
JavaScript操作选择对象的简单实例
2016/05/16 Javascript
移动适配的几种方案(三种方案)
2016/11/25 Javascript
Node.js websocket使用socket.io库实现实时聊天室
2017/02/20 Javascript
JS实现手写parseInt的方法示例
2017/09/24 Javascript
Vue中computed与methods的区别详解
2018/03/24 Javascript
vue工程全局设置ajax的等待动效的方法
2019/02/22 Javascript
angular 表单验证器验证的同时限制输入的实现
2019/04/11 Javascript
javascript创建元素和删除元素实例小结
2019/06/19 Javascript
通过原生vue添加滚动加载更多功能
2019/11/21 Javascript
vue-router 按需加载 component: () =&gt; import() 报错的解决
2020/09/22 Javascript
[01:14]DOTA2亚洲邀请赛小组赛赛前花絮
2017/03/27 DOTA
python中lambda()的用法
2017/11/16 Python
python 对象和json互相转换方法
2018/03/22 Python
将Django项目部署到CentOs服务器中
2018/10/18 Python
python实现播放音频和录音功能示例代码
2018/12/30 Python
基于python实现高速视频传输程序
2019/05/05 Python
使用WingPro 7 设置Python路径的方法
2019/07/24 Python
python实现高斯(Gauss)迭代法的例子
2019/11/20 Python
python飞机大战pygame游戏背景设计详解
2019/12/17 Python
python wav模块获取采样率 采样点声道量化位数(实例代码)
2020/01/22 Python
解决Windows下python和pip命令无法使用的问题
2020/08/31 Python
使用python-cv2实现Harr+Adaboost人脸识别的示例
2020/10/27 Python
python产生模拟数据faker库的使用详解
2020/11/04 Python
《夸父追日》教学反思
2014/02/26 职场文书
小学生节约用水倡议书
2014/05/15 职场文书
音乐学专业求职信
2014/07/22 职场文书
十七岁的单车观后感
2015/06/12 职场文书