当下 很忧郁啊 2022-01-21 10:57 采纳率: 0%
浏览 66

代码运行后在浏览器输入地址后,按回车,浏览器一直转圈给服务器返回一个空内容。如果再输入地址,按回车,又能返回页面。

问题遇到的现象和发生背景

尝试用python(socket)写了一个服务器,然后在浏览器上访问,返回一个html页面
问题:
代码运行后在浏览器输入地址后,按回车,浏览器一直转圈给服务器返回一个空内容。如果再输入地址,按回车,又能返回页面。
请问这是为啥?

问题相关代码,请勿粘贴截图
#服务器代码:
import socket
import re
def main():
   tcpsever=socket.socket(socket.AF_INET,socket.SOCK_STREAM)
   tcpsever.bind(('',8877))
   tcpsever.listen(128)
   print('already listening')
   while True:
      newserver,address=tcpsever.accept()
      print('haved accept ')
      server(newserver)

def server(newserver):
   print('servering')
   recvdata=newserver.recv(1024)
   print(recvdata)
   data=recvdata.decode('utf-8').splitlines()
   file_name='.'+re.match(r'[^/]+(/[^ ]*)',data[0]).group(1)
   print(file_name)
   response_header='HTTP/1.1 200 OK\r\n\r\n'
   response_body=open(file_name,'rb')
   newserver.send(response_header.encode('utf-8'))
   newserver.send(response_body.read())
   print('file already send')
   newserver.close()


if __name__== '__main__':
   main()


运行结果及报错内容

返回空内容的错误信息:
haved accept
servering
b''
Traceback (most recent call last):
File "C:\Users\NING\Desktop\learn\newfile\server.py", line 29, in
main()
File "C:\Users\NING\Desktop\learn\newfile\server.py", line 11, in main
server(newserver)
File "C:\Users\NING\Desktop\learn\newfile\server.py", line 18, in server
file_name='.'+re.match(r'[^/]+(/[^ ]*)',data[0]).group(1)
IndexError: list index out of range

我的解答思路和尝试过的方法
我想要达到的结果
  • 写回答

2条回答 默认 最新

  • 关注

    看了一下你的程序
    你如果要先访问html文件
    需要在程序根目录下面创建html文件
    如访问下面地址

    http://127.0.0.1:8877/123.html
    

    则你需要在你的py文件同目录下创建123.html文件才能访问

       file_name='.'+re.match(r'[^/]+(/[^ ]*)',data[0]).group(1)
    

    你这里匹配文件名,只能是在根目录下进行读取,

    img


    同时,浏览器会请求favicon.ico
    你需要在根目录放置一个favicon.ico图片否则会报错

    No such file or directory: './favicon.ico'
    
    评论 编辑记录

报告相同问题?

问题事件

  • 创建了问题 1月21日

悬赏问题

  • ¥20 有关区间dp的问题求解
  • ¥15 多电路系统共用电源的串扰问题
  • ¥15 slam rangenet++配置
  • ¥15 有没有研究水声通信方面的帮我改俩matlab代码
  • ¥15 对于相关问题的求解与代码
  • ¥15 ubuntu子系统密码忘记
  • ¥15 信号傅里叶变换在matlab上遇到的小问题请求帮助
  • ¥15 保护模式-系统加载-段寄存器
  • ¥15 电脑桌面设定一个区域禁止鼠标操作
  • ¥15 求NPF226060磁芯的详细资料