【发布时间】:2016-04-05 07:06:11
【问题描述】:
我有一个服务器,我的客户端向它发送一个带有一些值的 HTTP GET 请求。服务器端只是将这些值存储到数据库中。
现在,我观察到有时我没有在数据库中观察到这些值。可能发生以下情况之一:
- 客户端从未发送过它
- 服务器从未收到它
- 服务器写入数据库失败
我最怀疑的是原因是 2 - 但我无法完全解释。由于这是一个 HTTP 请求(这意味着下面有 TCP),应该保证 GET 请求的可靠传递,对吧?是否有可能即使我向服务器发送了一个 GET 请求 - 服务器从未收到它?如果是,TCP 在那里做什么?
或者,我是否可以自信地断言,如果服务器已启动并运行,并且发送到服务器的所有内容都写入数据库,那么数据库中缺少 GET 请求的详细信息意味着客户端从未发送过它?
不确定详细信息是否有帮助 - 但我正在运行一个 tomcat 服务器,我只是通过 get 请求发送一个名称-值对。
【问题讨论】:
-
无论您使用哪种语言发出 http 请求,您都必须检查该操作的结果,然后打印或记录...
-
因此,例如,有一些网络问题并且数据包从未到达服务器(因此我不会从服务器得到任何响应)-至少这种情况应该由 TCP 处理-即 - 重新发送数据包 - 直到我们得到响应?
-
是的,当然...最坏的情况是,您会收到超时错误...