在网络中查找IP地址

时间:2021-03-10 10:05:44

标签: c# networking ip

我需要找到连接到本地网络的 IP 地址。我看到可以使用 System.Net.NetworkInformation 类来完成。我按如下方式应用它,但这种方法比我预期的要慢得多。

private async void FindIp()
        {

            List<string> FindIpList = new List<string>();
            for (int i = 0; i < 255; i++)
            {
                Ping ping = new Ping();
                string Ip = "192.168.1." + i;
                var replay = await ping.SendPingAsync(Ip, 200);

                Console.WriteLine(replay.Status.ToString());

                if (replay.Status.ToString() == "Success")
                {
                    FindIpList.Add(Ip);
                }
            }
        }

当在计算机的命令行(CMD)中输入 arp -a 时,它会以毫秒为单位查找所有 ip 地址。听起来像是获取命令行输出并解析它的一种非常糟糕的方法。有没有更有效、更快捷的方法?

我已应用@KlausGütter 建议的示例代码,但出现 'System.InvalidOperationException' in System.dll 错误。任务为空。

代码:

List<string> FindIpList = new List<string>();
private void button_Click(object sender, RoutedEventArgs e)
{
    FindIpList.Add("192.168.1.12");
    FindIpList.Add("192.168.1.13");

    PingAsync();
}

private async Task<List<PingReply>> PingAsync()
        {
            Ping pingSender = new Ping();

            var tasks = FindIpList.Select(ip => pingSender.SendPingAsync(ip,2000));
            var results = await Task.WhenAll(tasks);

            return results.ToList();
        }

0 个答案:

没有答案