gpt4 book ai didi

c - 为什么客户端将网络服务器的消息回显给它?

转载 作者:行者123 更新时间:2023-11-30 19:05:18 24 4
gpt4 key购买 nike

我制作了一个简单的 Linux 套接字网络服务器并观察了它的 http 流量。通常,当它将 HTTP 200 或 404 发送回请求 GET 或 POST 客户端(Web 浏览器或扫描仪)时,客户端会回显服务器刚刚发送回它的消息。他们为什么这样做?他们期望从我的服务器得到什么答案?

new connection 0 established with 37.236.190.20:39889

new message 0 received from 37.236.190.20:39889

GET / HTTP/1.1 Connection: Keep-Alive Keep-Alive: 300 User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHT ML, like Gecko) Chrome/63.0.3239.132 Safari/537.36 Host: 18.231.188.211

sent file login.html to 0 37.236.190.20:39889 successfully | nsent = 550

new message 0 received from 37.236.190.20:39889

HTTP/1.1 200 OK Connection: close Content-Length: 465 Content-Type: text/html

[html page I sent here]

sent file login.html to 0 37.236.190.20:39889 successfully | nsent = 550

connection 0 with 37.236.190.20:39889 was forcebly closed. cause: echoing

最佳答案

由于我在任何地方都没有找到此类行为的任何记录,因此在 gdb 的帮助下,我发现我正在使用一个无符号变量来保存错误时返回 -1 的函数的返回值。

msg_buffer.length = recv(connected[i].socket, msg_buffer.data, msg_buffer.size, 0);
if (msg_buffer.length < 0) { // no message

因此第二行中的评估永远不会为真,并且消息的长度将为 0xffffffffffffffff。但由于缓冲区保存了我之前发送的消息,并且没有收到新消息来覆盖该消息,因此客户端似乎正在回显我的服务器。谢谢大家的帮助。并对这个错误表示歉意。

关于c - 为什么客户端将网络服务器的消息回显给它?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50100446/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com