为什么客户端会回复网络服务器的消息?

时间:2018-04-30 12:21:53

标签: c linux sockets http server

我制作了一个简单的Linux套接字网络服务器,并观看了它的http流量。通常,当它将HTTP 200或404发送回请求的GET或POST客户端(Web浏览器或扫描程序)时,客户端会将服务器刚刚发送的消息回送给它。为什么他们的行为如此,他们对我的服务器有何期待?

  
    
      

与37.236.190.20:39889建立的新连接0

             

收到37.236.190.20:39889

的新消息0              

GET / HTTP / 1.1       连接:Keep-Alive Keep-Alive:300       User-Agent:Mozilla / 5.0(Windows NT 10.0; Win64; x64)AppleWebKit / 537.36(KHT       ML,像Gecko)Chrome / 63.0.3239.132 Safari / 537.36       主持人:18.231.188.211

             

成功将文件login.html发送到0 37.236.190.20:39889 nsent = 550

             

收到37.236.190.20:39889

的新消息0              

HTTP / 1.1 200好的       连接:关闭       内容长度:465       内容类型:text / html

             

[我发送的html页面]

             

成功将文件login.html发送到0 37.236.190.20:39889 nsent = 550

             

与37.236.190.20:39889的连接0被强行关闭。原因:回声

    
  

1 个答案:

答案 0 :(得分:1)

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

--net=host

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