尝试用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
看了一下你的程序
你如果要先访问html文件
需要在程序根目录下面创建html文件
如访问下面地址
http://127.0.0.1:8877/123.html
则你需要在你的py文件同目录下创建123.html文件才能访问
且
file_name='.'+re.match(r'[^/]+(/[^ ]*)',data[0]).group(1)
你这里匹配文件名,只能是在根目录下进行读取,
No such file or directory: './favicon.ico'
按F12看看有没有错误信息,后台有什么输出信息。