gpt4 book ai didi

c# - 检查套接字连接

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

正在尝试一些不同的方法来检测远程套接字是否已断开连接。

我目前正在执行此操作,以检查是否已连接套接字。

public void CheckSocket()
{
try
{
bool test1 = s.Poll(_MicrosecondFaultTolerance, SelectMode.SelectRead);
bool test2 = (s.Available == 0);
if (test1 && test2)
_Active = false;
}
catch
{
_Active = false;
}
}

出于某种原因,这在每次不询问任何问题时都在第一滴中完美地起作用,但是此后检查未将_Active设置为false,因此从不将客户端视为“断开连接”。我还有其他方法可以测试连接或获得更可靠的结果吗?

最佳答案

我不确定“第一滴”是什么意思,因为一旦套接字下的连接断开,就必须关闭该套接字。这一切都取决于您在CheckSocket()函数之外的工作。但是假设所有操作都正确,如果基础连接处于空闲状态,则仅轮询套接字将无法可靠地工作。

仅当基础传输上有一些流量时,才能检测到断开连接。如果闲置时放弃连接(未关闭),它将永远静静地坐在那里。要在空闲时检测到废弃的连接,请使用setsockopt()SO_KEEPALIVE。 TCP将定期与另一端交换虚拟流量,以测试连接是否仍然有效,并防止任何NAT或其他动态路由规则超时。请注意,检测到丢弃仍可能需要30秒或更长时间,因为这是TCP的默认超时。

关于c# - 检查套接字连接,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8930413/

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