我将现有C ++应用程序的客户端重写为C#。服务器应用程序将保持用C ++编写。通讯一直正常工作,直到服务器关闭套接字为止。该体系结构如下,并使用异步发送和接收: 客户端:将数据发送到服务器 服务器:从客户端接收数据 服务器:将数据(文件)发送到客户端 服务器:关闭套接字 客户端:从服务器接收数据
在旧的C ++版本程序中,数据已经在套接字上,即使套接字连接的一侧关闭,该数据仍然可用。从我对C#的了解中,一旦一半的连接关闭,就会发送一个重置连接数据包,并且C#得到一个异常,这阻止了我接收其余数据。 (我只收到1个文件,而不是2个文件,因为套接字在发送信息后被服务器关闭了)。
我可以发布我的代码,但这实际上只是一个简单的异步发送和接收。如果我单步执行代码并在服务器的套接字关闭功能之前暂停,则一切正常。实际的异常错误是“远程主机强行关闭了现有连接。”