使用浏览器访问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标准库os.path包、glob包使用实例
Nov 25 Python
Python的设计模式编程入门指南
Apr 02 Python
从Python的源码浅要剖析Python的内存管理
Apr 16 Python
Python中six模块基础用法
Dec 08 Python
Python+Redis实现布隆过滤器
Dec 08 Python
Python Des加密解密如何实现软件注册码机器码
Jan 08 Python
如何使用selenium和requests组合实现登录页面
Feb 03 Python
关于Python 解决Python3.9 pandas.read_excel(‘xxx.xlsx‘)报错的问题
Nov 28 Python
Python基于Webhook实现github自动化部署
Nov 28 Python
python爬虫 requests-html的使用
Nov 30 Python
Python源码解析之List
May 21 Python
Python中OpenCV实现查找轮廓的实例
Jun 08 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
饭制《星际争霸》Mod:优化游戏机制 增加新单位
2017/07/02 星际争霸
PHP4 与 MySQL 数据库操作函数详解
2006/12/06 PHP
在任意字符集下正常显示网页的方法一
2007/04/01 PHP
PHP7.1方括号数组符号多值复制及指定键值赋值用法分析
2016/09/26 PHP
Laravel接收前端ajax传来的数据的实例代码
2017/07/20 PHP
PHP从零开始打造自己的MVC框架之入口文件实现方法详解
2019/06/03 PHP
php实现网页上一页下一页翻页过程详解
2019/06/28 PHP
javascript 去字符串空格终极版(支持utf8)
2009/11/14 Javascript
getElementsByTagName vs selectNodes效率 及兼容的selectNodes实现
2010/02/26 Javascript
jQuery焦点控制图层展示延迟隐藏的方法
2015/03/09 Javascript
jquery实现的蓝色二级导航条效果代码
2015/08/24 Javascript
JS实现网页上随滚动条滚动的层效果代码
2015/11/04 Javascript
纯js实现html转pdf的简单实例(推荐)
2017/02/16 Javascript
浅谈Vue SSR 的 Cookies 问题
2017/11/20 Javascript
禁止弹窗中蒙层底部页面跟随滚动的几种方法
2017/12/07 Javascript
谈谈React中的Render Props模式
2018/12/06 Javascript
搭建Vue从Vue-cli到router路由护卫的实现
2019/11/14 Javascript
Vue中watch、computed、updated三者的区别及用法
2020/07/27 Javascript
Vue2.x和Vue3.x的双向绑定原理详解
2020/11/05 Javascript
[38:51]2014 DOTA2国际邀请赛中国区预选赛 Orenda VS LGD-CDEC
2014/05/22 DOTA
[02:05]DOTA2完美大师赛趣味视频之看我表演
2017/11/18 DOTA
用python实现面向对像的ASP程序实例
2014/11/10 Python
python实现在控制台输入密码不显示的方法
2015/07/02 Python
python 安装virtualenv和virtualenvwrapper的方法
2017/01/13 Python
python的继承知识点总结
2018/12/10 Python
python url 参数修改方法
2018/12/26 Python
基于django 的orm中非主键自增的实现方式
2020/05/18 Python
CSS3实现swap交换动画
2016/01/19 HTML / CSS
水上运动奥特莱斯:Wasterports Outlet
2018/08/08 全球购物
4S店售后客服自我评价
2014/04/09 职场文书
食品安全承诺书
2014/05/22 职场文书
2014年行政助理工作总结
2014/11/19 职场文书
2015年护士节活动总结
2015/02/10 职场文书
简历自荐信范文
2015/03/09 职场文书
Java 超详细讲解IO操作字节流与字符流
2022/03/25 Java/Android
MySQL数据库安装方法与图形化管理工具介绍
2022/05/30 MySQL