Что делать если TcpClient.Connect подвешивает вашу программу?

Правильное решение – использовать асинхронное соединение. Один из вариантов –

TcpClient.BeginConnect.

Пример (взят с https://msdn.microsoft.com/en-us/library/system.net.sockets.tcpclient.connect%28v=vs.110%29.aspx):

public static void DoBeginConnect1(string host, int port)
        {
            // Асинхронное соединение к серверу
            TcpClient t = new TcpClient(AddressFamily.InterNetwork);
            IPAddress[] remoteHost = Dns.GetHostAddresses(host);

            connectDone.Reset();

            Console.WriteLine("Establishing Connection to {0}", 
                remoteHost[0]);
            t.BeginConnect(remoteHost[0], port, 
                new AsyncCallback(ConnectCallback), t);

            // Ждём здесь окончания процесса соединения.
            connectDone.WaitOne();

            Console.WriteLine("Connection established");
        }

About

Leave a Reply

Your email address will not be published. Required fields are marked *