发送GET到s后忽略/放弃传入的HTML

2024-10-01 00:24:46 发布

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

我使用以下代码段将数据发送到web服务器。在这种情况下,我根本不关心服务器想要发回的HTML页面。服务器支持其他需要这些数据的客户机,因此我无法消除我的Python在Raspberry Pi上返回的HTML数量。我看到的是,ESP-8266服务器似乎经常挂起等待将数据发送回Python/Pi客户机。就像Pi在某些事情发生之前停止接受数据。作为一个测试,我消除了50%的web页面,并且在Pi/Python上运行良好。我应该在python代码中做些什么来设置缓冲区大小,还是发出一个命令来确保数据被丢弃,而不是保存在一个socket缓冲区中的某个地方,这个地方可能会溢出,或者导致python/pi停止接受服务器数据?你知道吗

htmlString = ("/Interior, /COLOR,r="+str(dimPixelIn[0]).zfill(3)+",g="+str(dimPixelIn[1]).zfill(3)+",b="+str(dimPixelIn[2]).zfill(3))
conn = http.client.HTTPConnection(awningAddress, timeout=0.3)
try:
    conn.request("GET", htmlString)
except socket.timeout as sto:
    print("Error")
except http.client.HTTPException as Exc:
    print("Error")
finally:    
    conn.close()
conn.close()

Tags: 数据服务器web客户机html地方pi页面
1条回答
网友
1楼 · 发布于 2024-10-01 00:24:46

TCP连接由两个几乎独立的单向流组成。conn.close()只关闭从客户机到服务器的流。从服务器到客户机的连接仍然打开,服务器仍然发送数据。你知道吗

我知道2个选项如何防止服务器发送不必要的数据。你知道吗

  • 不要使用GET方法。使用OPTIONS方法。如果服务器支持OPTIONS方法(而且它应该支持),则将其处理为GET请求,但它发送带有HTTP头但没有正文的HTTP响应。你知道吗
  • 重置连接,而不是关闭连接。您可以在设置SO\u LINGER socket选项时重置连接—例如,请参见Sending a reset in TCP/IP Socket connection。你知道吗

相关问题 更多 >