【发布时间】:2020-08-04 07:52:58
【问题描述】:
我有一个与 DNS 服务器通信的项目。例如,我使用了谷歌的 DNS 服务器。连接到服务器并发送消息后,一切正常,服务器返回答案。但是当我发送第二个查询时,服务器已经自己关闭了连接(发送 FIN),现在我向无效的 fd 发送了一条消息。这个问题有已知的解决方案吗?
【问题讨论】:
标签: c++ networking tcp
我有一个与 DNS 服务器通信的项目。例如,我使用了谷歌的 DNS 服务器。连接到服务器并发送消息后,一切正常,服务器返回答案。但是当我发送第二个查询时,服务器已经自己关闭了连接(发送 FIN),现在我向无效的 fd 发送了一条消息。这个问题有已知的解决方案吗?
【问题讨论】:
标签: c++ networking tcp
服务器应该假设客户端会发起连接 关闭,并且应该延迟关闭连接的结束,直到 所有未完成的客户请求均已得到满足。
这意味着如果您同时发送多个请求,则连接将保持打开状态,直到所有请求都得到答复。 但是一旦没有更多的挂起请求,连接就可以关闭了。
如果您想发出多个请求,那么您需要一次发送所有请求,或者为每个请求创建新连接。
【讨论】: