承插腹板

2024-05-29 02:33:25 发布

您现在位置:Python中文网/ 问答频道 /正文

我尝试使用Python构建一个简单的web服务器。 我尝试以客户端的身份向mozilla web浏览器发送最小响应。但是,客户端浏览器一直在旋转。代码如下:

import socket
mysocket = socket.socket(2,1)
mysocket.bind(('',80))
mysocket.listen(5)


cli2,addr2 = mysocket.accept()
print('Client connected')
status = b'HTTP/1.1 200 OK\r\n'
connection_type=b'Connection: close\r\n'
content_type = b'Content-Type: text/html\r\n'  
server = b'Server: Python-Server/5.2\r\n\r\n'
f = open('c:/users/totz/documents/index.html','r')
data = f.read()
data_b = data.encode()
content_html_length_calculation = len(data) * 8
content_length_header = 'Content-Length: ' + str(content_html_length_calculation) + '\r\n'
content_length_header_b = content_length_header.encode()
sending_data = status + connection_type + content_length_header_b + content_type + server
cli2.send(sending_data)
print('Data sent')
mysocket.close()

为什么客户端一直在旋转,甚至Wireshark告诉我这个web服务器已经正确地向客户端发送了这个响应


Tags: 服务器web客户端datahtmltypestatus浏览器
1条回答
网友
1楼 · 发布于 2024-05-29 02:33:25
content_html_length_calculation = len(data) * 8

看起来您假设内容长度是以位为单位的,因为您将数据的长度乘以8。只不过,内容长度是以字节为单位的。由于您声称的内容长度远远大于实际数据,浏览器仍在等待更多数据。 除此之外,您的服务器不读取来自客户机的请求,这可能会导致其他问题(例如,如果关闭客户机套接字cli,有关“连接重置”的报告)

相关问题 更多 >

    热门问题