用tcpclient的异步连接方式,设置连接超时

Posted wanjinliu

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了用tcpclient的异步连接方式,设置连接超时相关的知识,希望对你有一定的参考价值。

如题

原理:异步连接,获取状态。阻止主进程等待异步进程返回。指定异步进程超时时间,这段时间内,如果异步连接没有返回,则以未完成状态返回,主进程继续。

根据对获取到的状态的识别,来判断是超时还是收到回应而使进程继续。再分别处理。

代码:

static void Main(string[] args)
        {
            for (int i = 20; i <= 25; i++)
            {
                TcpClient tcp = new TcpClient();
                IAsyncResult async = tcp.BeginConnect(IPAddress.Parse("120.27.234.XXX"), i, null, null);
                async.AsyncWaitHandle.WaitOne(1000);
                if (async.IsCompleted)
                {
                    Console.WriteLine($"{i} is open.");
                }
                else
                {
                    Console.WriteLine($"{i} is closed."); ;
                }
                tcp.Close();
            }
            Console.WriteLine("ok");
            Console.ReadKey();
        }

 

以上是关于用tcpclient的异步连接方式,设置连接超时的主要内容,如果未能解决你的问题,请参考以下文章

处理异步时的 TcpClient 与 Socket

求助tcpclient 报“由于目标计算机积极拒绝,无法连接”

C#里实现简单的异步TCP服务器

C#里实现简单的异步TCP服务器

C#里实现简单的异步TCP服务器

如何在 TcpClient 中正确使用 TPL?