从可以连接到服务器的IP阵列返回第一个IP

时间:2018-01-29 02:58:10

标签: c#

IParray ips[],如何从可以连接服务器的IP阵列返回第一个IP?

我尝试使用例外来检查IP是否可以连接,而不是返回值,所以我不知道如何返回。

foreach (IPAddress x in ips) {
    try {
        var client = new TcpClient(x.ToString(), 2000);
        return x.ToString();
    } 
    catch(Exception e) {
    }
}

1 个答案:

答案 0 :(得分:1)

实际上,你的想法并没有错。为了使所有更好,更简单,你可以做这样的事情:

public void YourMethod
{
  foreach (IPAddress x in ips)
  {
    if(IsServerListening(x.ToString(), 2000))
    {
      //If you can connect, then exit the foreach loop (I assume you´ll do something else)
      break;
    }
  }
}

private bool IsServerListening(string server, int port)
{
    using(TcpClient client = new TcpClient())
    {
        try
        {
            client.Connect(server, port);
        }
        catch(SocketException)
        {
            return false;
        }
        client.Close();
        return true;
    }
}