有没有任何方法检查使用winsock的send()或WSASend()发送的数据是否确实传送到目的地?确保发送()数据已发送
我正在写一个应用程序与第三方服务器交谈,这个服务器在工作一段时间后有时会关闭,并且需要确定发送到该服务器的消息是否已发送。问题是有时候调用send()完成没有错误,即使服务器已经关闭,只有下一个send()完成时出现错误 - 所以我不知道以前的消息是否已经传递。我想在TCP层有信息,如果某些(或所有)发送的数据包是acked或不是,但它不是使用套接字接口(或我找不到方法)。
最糟糕的是,我无法更改服务器的代码,所以我无法获得任何传送确认消息。
TCP协议有瑕疵,所以TCP层完全知道对方是否收到已发送消息的一部分 - 是否有任何获取此信息的选项?我知道通过其他TCP堆栈来完成消息并不意味着读取它并按应用程序进行处理,但我可以假设它足够接近。作为第三方服务器,我无法修改应用程序协议。 – miara 2011-01-27 07:04:05
该信息不会传播回API,正如您所说的那样,并不意味着服务器将其从*它的缓冲区中读出并处理。 – CoreyStup 2011-01-27 13:36:26