2

try/catchを使用してSocketExceptionをキャッチするのではなく、接続できないときはいつでもSocketExceptionを取得しないようにする方法があるかどうか疑問に思っていました。

サーバーが利用可能かどうかを確認する次のコードがあります。

public bool CheckServerStatus(string IP, int Port)
    {
        try
        {
            IPAddress[] IPs = Dns.GetHostAddresses(IP);

            using (Socket s = new Socket(AddressFamily.InterNetwork,
                SocketType.Stream,
                ProtocolType.Tcp))
            s.Connect(IPs[0], Port);

            return true;
        }
        catch (SocketException)
        {
            return false;
        }
    }

前もって感謝します。

4

4 に答える 4

2

次のようにBeginConnectを使用してこれを達成することができました

int connectTimeoutMS = 1000;
IPEndPoint endPoint = GetEndPoint();
var evt = new AutoResetEvent(false);
_socket.BeginConnect(endPoint, (AsyncCallback)delegate { evt.Set(); }, null);
evt.WaitOne(connectTimeoutMS);
于 2013-10-25T15:50:20.593 に答える