所以我试图关闭一个套接字而不将它关闭到另一边进行阅读。
我的结束代码是
objClientSocket.Shutdown(SocketShutdown.Both);
objClientSocket.Close(120);
问题在于正在执行
的应用程序 objClientSocket.Receive(buffer);
收到连接被强行关闭的错误。如果我在.Shutdown()之前设置一个断点并让我的应用程序在接收端运行,那很好。我认为.Shutdown()方法等待在关闭之前读取和清空套接字?我错了吗?
在此之后我取出.Shutdown()并且.Close()导致同样的错误。(并不感到惊讶,但我想我会把它弄掉。)
答案 0 :(得分:0)
我预计问题可能是下游端已经决定要接收从未实际发送过的数据。自从我处理了细节以来已经有一段时间了,但是套接字API提供了方法(我认为一个是“选择”),它可以用来等待套接字上发生“某事”;一旦套接字说出某些事情发生,就可以看到有多少数据可用(如果有的话)然后处理它。