gpt4 book ai didi

c# - Socket.Shutdown和线程

转载 作者:行者123 更新时间:2023-12-03 12:05:14 28 4
gpt4 key购买 nike

我是套接字编程的新手。我们的应用程序使用套接字与我们公司制造的设备进行通信。我们有时套接字需要花费很长时间才能关闭。

这是在关闭套接字时运行的代码:

if (client != null) {
try {
if (client.Connected) {
client.Disconnect(false);
client.Shutdown(SocketShutdown.Both);
}

client.Close();
} catch (SocketException) {
}

client = null;
}

我已经读过 documentation for the Socket.Shutdown methodthe responses to this question,我很困惑。是否有任何数据正在等待从远程系统传输到该系统(反之亦然)的传输或放弃?如果放弃了等待传输的数据,那么是什么原因延迟了套接字的关闭?

最佳答案

在关闭之前调用Shutdown,以便您可以确保实际上已接收到所有排队的数据。

不要调用Disconnect。为什么这是必要的?没有理由。在关闭之前,这尤其错误。想想这是否有意义。

Dispose之后调用CloseShutdown以释放所有操作系统资源。至此,连接已可靠关闭。

不要吞下SocketException。你为什么做这个?您将永远不会发现没有收到您发送的数据。

We have a problem with the socket sometimes taking a long time to close.



你怎么知道的?这有什么症状?

关于c# - Socket.Shutdown和线程,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24517045/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com