【发布时间】:2013-11-21 22:20:45
【问题描述】:
所以我试图关闭一个套接字而不将其关闭到另一侧以供阅读。
我的结束代码是
objClientSocket.Shutdown(SocketShutdown.Both);
objClientSocket.Close(120);
问题在于正在执行的应用程序
objClientSocket.Receive(buffer);
收到连接已被强制关闭的错误。如果我在 .Shutdown() 之前放置一个断点并让我的应用程序在接收端运行,那很好。我认为 .Shutdown() 方法在关闭之前等待套接字被读取并清空?我猜错了吗?
在此之后,我取出 .Shutdown() 和 .Close() 导致相同的错误。(并不惊讶,但我认为我会解决它。)
【问题讨论】:
-
我已经编辑了你的标题。请参阅“Should questions include “tags” in their titles?”,其中的共识是“不,他们不应该”。
-
' 我以为 .Shutdown() 方法在关闭之前等待套接字被读取并清空?':不,它只是将要发送的 FIN 排入队列,并且 FIN 应该导致接收器以获取流结束条件。重置可能是由关闭超时引起的。我会摆脱它。