使用浏览器访问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的微信聊天机器人示例代码
Mar 03 Python
python实现机器人行走效果
Jan 29 Python
利用Python实现在同一网络中的本地文件共享方法
Jun 04 Python
tensorflow更改变量的值实例
Jul 30 Python
Python开发的十个小贴士和技巧及长常犯错误
Sep 27 Python
python通过robert、sobel、Laplace算子实现图像边缘提取详解
Aug 21 Python
利用Python裁切tiff图像且读取tiff,shp文件的实例
Mar 10 Python
Flask模板引擎Jinja2使用实例
Apr 23 Python
Keras—embedding嵌入层的用法详解
Jun 10 Python
Python reques接口测试框架实现代码
Jul 28 Python
详解python定时简单爬取网页新闻存入数据库并发送邮件
Nov 27 Python
pytorch 梯度NAN异常值的解决方案
Jun 05 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
一个阿拉伯数字转中文数字的函数
2006/10/09 PHP
Symfony实现行为和模板中取得request参数的方法
2016/03/17 PHP
示例详解Laravel重置密码代码重构
2016/08/10 PHP
redis查看连接数及php模拟并发创建redis连接的方法
2016/12/15 PHP
Laravel 5.4.36中session没有保存成功问题的解决
2018/02/19 PHP
php常用日期时间函数实例小结
2019/07/04 PHP
JS IE和FF兼容性问题汇总
2009/02/09 Javascript
js 多浏览器分别判断代码
2010/04/01 Javascript
jquery入门—数据删除与隔行变色以及图片预览
2013/01/07 Javascript
Javascript计算两个marker之间的距离(Google Map V3)
2013/04/26 Javascript
JS+CSS实现可以凹陷显示选中单元格的方法
2015/03/02 Javascript
javascript中字体浮动效果的简单实例演示
2015/11/18 Javascript
JS组件系列之Bootstrap table表格组件神器【二、父子表和行列调序】
2016/05/10 Javascript
详解JavaScript中this关键字的用法
2016/05/26 Javascript
JS限制条件补全问题实例分析
2016/12/16 Javascript
Ajax和Comet技术总结
2017/02/19 Javascript
jQuery绑定事件方法及区别(bind,click,on,live,one)
2017/08/14 jQuery
Vue-router的使用和出现空白页,路由对象属性详解
2018/09/03 Javascript
IE浏览器下JS脚本提交表单后,不能自动提示问题解决方法
2019/06/04 Javascript
JS 实现发送短信验证码的“59秒后重新发送验证短信”功能
2019/08/23 Javascript
浅谈laytpl 模板空值显示null的解决方法及简单的js表达式
2019/09/19 Javascript
vue中 v-for循环的用法详解
2020/02/19 Javascript
vue-amap根据地址回显地图并mark的操作
2020/11/03 Javascript
简单的Apache+FastCGI+Django配置指南
2015/07/22 Python
Tensorflow使用支持向量机拟合线性回归
2018/09/07 Python
python贪吃蛇游戏代码
2020/04/18 Python
利用Python库Scapy解析pcap文件的方法
2019/07/23 Python
NFL墨西哥官方商店:Tienda NFL
2017/11/28 全球购物
TALLY WEiJL法国网上商店:服装、时装及配饰
2019/08/31 全球购物
应聘教师自荐信
2013/10/12 职场文书
机械个人求职信范文
2014/01/24 职场文书
出纳年终工作总结2014
2014/12/05 职场文书
丧事答谢词
2015/01/05 职场文书
主持人开幕词
2015/01/29 职场文书
Nginx隐藏式跳转(浏览器URL跳转后保持不变)
2022/04/07 Servers
请求模块urllib之PYTHON爬虫的基本使用
2022/04/08 Python