我遇到了这样的问题:似乎我的服务器在客户端超时或返回某些错误后收到了来自客户端的http请求。 我想知道我的服务器是否有可能在超时后收到 http 请求? 我在客户端中的代码:
while(1)
{
std::cout << "=====post once>>>>>>>>>>>" << std::endl;
auto res = Post(route.c_str(), content, "text/plain");
if((res == nullptr) || (res->status != 200))
sleep(3);
else
{
if (res) {
// std::cout << res->status << std::endl;
std::cout << res->body << std::endl;
}
break;
}
}
我将在超时或错误请求后重试发布。在某些情况下,WIFI不好,服务器在很短的时间内收到了两个http帖子。似乎一个 http 请求在错误或超时或类似的事情之后首先到达服务器,然后另一个 http 请求到达服务器,因为 while(1(。 任何人都可以回答我的问题吗?谢谢
当然可以。例如,当服务器由于网络延迟而向客户端发送响应时,可能会发生超时。在这种情况下,服务器收到请求,正确处理它并发送响应。只是没有收到客户。
如果您重复来自客户端的请求,最好设计您的 API,以便服务器可以正确处理重复的请求(例如,在请求中包含一些 id(。