我对套接字编程很陌生。我们的应用程序使用套接字与我们公司生产的设备进行通信。我们的插座有问题,有时需要很长时间才能关闭。
下面是关闭套接字时运行的代码:
if (client != null) {
try {
if (client.Connected) {
client.Disconnect(false);
client.Shutdown(SocketShutdown.Both);
}
client.Close();
} catch (SocketException) {
}
client = null;
}
我读过“ method”和“the responses to this question”,我很困惑。是否将任何正在等待从远程系统传输到此系统的数据(反之亦然)被传输或放弃?如果正在等待传输的数据被放弃,什么可以延迟套接字的关闭?
发布于 2014-07-01 21:55:29
在关闭之前调用Shutdown
,这样您就可以确保所有排队的数据实际上都收到了。
不要调用Disconnect
。为什么有必要这样做?没什么原因。在关闭之前,这尤其是错误的。想想这是否有意义。
在Dispose
或Close
之后调用Shutdown
以释放所有操作系统资源。现在连接已经可靠地关闭了。
不要吞下SocketException
。你为什么要这么做?你永远不会发现你发送的数据没有收到。
我们的插座有问题,有时需要很长时间才能关闭。
怎么又知道了?这是什么症状?
https://stackoverflow.com/questions/24517045
复制相似问题