首页 > 动态中心 > 技术文章  >  正文

C# TCP连接超时设置

2022-08-11 00:00:00

文章摘要:在重构洞察眼局域网监控软件的屏幕墙功能时,我们的目标是业务逻辑和界面更新分离。屏幕墙的一个特点是短时间内要和多个客户端建立连接传输数据,管理多个连接就不可避免要涉及到多线程问题,目的是要高效的传输屏幕数据。涉及到网络多线程编程肯定不会为每一个终端建立一个线程来收发数据,而是使用线程池。考虑到应用场合,我们发起连接的时候要有一个连接超时机制,本来在我们的C++代码里,已经有这

C# TCP连接超时设置

在重构洞察眼局域网监控软件屏幕墙功能时,我们的目标是业务逻辑和界面更新分离。屏幕墙的一个特点是短时间内要和多个客户端建立连接传输数据,管理多个连接就不可避免要涉及到多线程问题,目的是要高效的传输屏幕数据。涉及到网络多线程编程肯定不会为每一个终端建立一个线程来收发数据,而是使用线程池。

考虑到应用场合,我们发起连接的时候要有一个连接超时机制,本来在我们的C++代码里,已经有这样封装好的函数,C#虽然也有Connect超时机制的代码,但是代码毕竟不是我写的,所以还是需要审查一遍。不看不知道,一看就发现了问题,大体TcpClient的连接超时代码如下:

public TcpClient Connect()
{
// kick off the thread that tries to connect
connected = false;
exception = null;
Thread thread = new Thread(new ThreadStart(BeginConnect));
thread.IsBackground = true; // 作为后台线程处理
// 不会占用机器太长的时间
thread.Start();

// 等待如下的时间
thread.Join(_timeout_milliseconds);

if (connected == true)
{
// 如果成功就返回TcpClient对象
thread.Abort();
return connection;
}
if (exception != null)
{
// 如果失败就抛出错误
thread.Abort();
throw exception;
}
else
{
// 同样地抛出错误
thread.Abort();
string message = string.Format("TcpClient connection to {0}:{1} timed out",
_hostname, _port);
throw new TimeoutException(message);
}
}

这里建立连接的时候竟然创建一个线程,然后利用线程超时就Terminate来实现超时机制,不得不可谓愚蠢之极,毕竟网上的代码都不负责任。

这样影响稳定性、影响性能的代码肯定不能再洞察眼中出现的。所以重新编写了C# TCP连接超时的代码。

namespace NSecsoft.NSec.Core.Util
{
class ConnectState
{
public readonly ManualResetEvent mrEve = new ManualResetEvent(false);
public TcpClient tcpClient;
}

public static class ConnectEx
{
public static bool ConnectWithTimeout(TcpClient client, IPAddress address, int port, int timeout)
{
bool ret = false;

try
{
ConnectState state = new ConnectState()
{
tcpClient = client
};

IAsyncResult ar = client.BeginConnect(address, port, new AsyncCallback(ConnectCallback), state);
state.mrEve.WaitOne(timeout);
if (client.Connected)
{
ret = true;
}
}
catch (Exception)
{
// ignored
}

return ret;
}

private static void ConnectCallback(IAsyncResult ar)
{
ConnectState state = ar.AsyncState as ConnectState;</blockquote>
state.mrEve.Set();
state.mrEve.Dispose();
state.tcpClient.EndConnect(ar);
}
}
}
上一篇 : 公司电脑监控软件
  • 相关推荐
  • 远程连接电脑实现远程监控?这几个方法没见过吧?

    远程连接电脑实现远程监控,可以采用多种方法,这些方法各有特点,适用于不同的场景和需求。以下是一些常见的方法:1.专业电脑监控软件代表软件:如洞察眼MIT系统。特点:不仅具备远程连接和监控电脑的功能,还提供了全方位的安全防护和管理服务。操作步骤:在被监控电脑上安装被控端软件。在控制端电脑上安装主控端软件,并配置相关监控参...

    2024-08-27 14:38:01
  • 聊天摄像头连接电脑当监控软件(智能摄像头:电脑监控新时代)

    摘要:智能摄像头是指具备人工智能技术和网络连接功能的现代化监控设备。它通过图像识别、语音识别等技术,能够实时监控和分析周围环境,为用户提供更智能、便捷、安全的服务,将电脑监控带入了一个全新的时代。智能摄像头的发展1、智能摄像头起初主要用于安防领域,可实现对目标的实时监控和录像等功能。2、随着人工智能技术的发展,智能摄像...

    2023-08-25 00:00:00
  • 如何限制外部设备连接电脑

    随着计算机网络技术的快速发展,使用电脑办公的人数日益增加。作为电脑的衍生产品,U盘就像是一个可移动、便携的存储设备。其主要目的是用来存储数据资料,并通过USB接口与电脑连接,实现即插即用,使用非常简单方便,同时安全性也很好。U盘主要应用于个人数据的存储、电脑修复、系统管理以及携带应用程序到其他的电脑。然而,正如任何技术...

    2023-08-16 00:00:00
  • Windows自带的远程桌面连接为何不能代替洞察眼

    随着科技的发展,网络的进步,电脑已成为我们生活中密不可分的重要伙伴,有时候因为工作需要我们时常会通过远程桌面连接控制另一台电脑进行查找文件或者解决问题。远程桌面连接控制后我们就可以远程的控制这台计算机了,通过远程桌面连接控制功能我们可以实时地操作这台计算机,在上面安装软件,运行程序,所有的一切都好像是直接在这台计算机上...

    2023-08-16 00:00:00
  • 物联网连接设备给企业带来重大风险

    互联设备中的安全漏洞正在困扰着数字领域,影响着广泛的行业。据数据统计,IT设备占受影响设备的四分之三以上(78%),而物联网(IoT)设备占易受攻击设备总数的14%。运营技术(OT)和医疗物联网(IoMT)设备分别占6%和2%。近80%的IT设备漏洞被归类为高严重性,这表明给IT团队带来了巨大的挑战,因为这些漏洞可能导...

    2023-07-25 13:43:56
  • 如何禁止网线直连拷贝电脑数据、如何禁止网线直连传送文档、禁止一条网线连接两台电脑?

    作者:网络喵 日期:2023年10月25日 当前有一种文件传输方式极难控制,就是两台电脑通过一根网线连接互相传输数据,咨询了不下30余款软件,都没有控制这种文件传输的功能。目前市场上的产品大多是通过控制USB端口、禁止QQ传文件、禁止邮箱发文件、禁止网盘发文件、禁止光驱刻录等方式实现的,控制方式比较粗犷,很少见控制的...

    2023-06-26 00:00:00
  • 如何禁止两台电脑直接网线连接、禁止一根网线连接两台电脑、禁止通过网线连接两台电脑复制文件的行为?

    当前有一种文件传输方式极难控制,就是两台电脑通过一根网线连接互相传输数据,咨询了不下30余款软件,都没有控制这种文件传输的功能。目前市场上的产品大多是通过控制USB端口、禁止QQ传文件、禁止邮箱发文件、禁止网盘发文件、禁止光驱刻录等方式实现的,控制方式比较粗犷,很少见控制的十分精细的产品。通过网友推荐,小编了解到有一款...

    2023-06-26 00:00:00
  • 限制电脑安装随身wifi,禁止员工手机连接无线网络,禁止电脑文档外泄

    日常生活和工作中,除了自己家里的网络,我们使用较多的就是单位的网络了。通常只要知道单位的无线网络密码,就可以轻松将自己的手机连网并可能从事与工作无关的一些事情,例如:下载视频、看电影、玩游戏、网购、炒股、刷微博、刷论坛等,这些行为让企业的网络管理人员非常头疼。企业的网络资源有限,如果大家都将自己的智能设备连接公司无线网...

    2023-06-26 00:00:00
  • 怎样禁止电脑连接U盘、如何禁止电脑数据拷贝、限制电脑数据外发?

    作者:网络喵 日期:2023年10月23日 计算机技术和网络技术的高速发展,给我们的生活带来了极大的便利,同时也带来了很多麻烦,尤其在工作中。对于某些特殊行业,有很多重要文件是禁止用户随意拷贝出去的。例如:设计图纸、调研数据、源代码、策划方案、画册源文件等等,这些机密文件一旦泄露,可能会给企业带来不可估量的损失。对于...

    2023-06-26 00:00:00
  • 如何禁止手机连接wifi、怎么阻止别人连接wifi、如何禁用手机连接wifi?

    作者:网络喵 日期:2023年12月18日 现在很多公司的局域网都有wifi,可以方便公司员工使用笔记本电脑、平板电脑等设备接入,从而便利了通过无线网络进行工作。但是,由于现在通过手机连接wifi进行上网的现象越来越多,这使得员工也可以轻松用自己的手机连接公司wifi,从而便利了随时随地进行上网的情况。但是,...

    2023-06-26 00:00:00

大家都在搜的词:

微信扫一扫联系售前工程师