我想使用C#获取连接到PC的所有计算机的IP地址,但是我不想使用Ping方法,因为它会花费很多时间,尤其是当IP地址范围很广时。

最佳答案

获取所有事件的TCP连接

使用IPGlobalProperties.GetActiveTcpConnections方法

using System.Net.NetworkInformation;

public static void ShowActiveTcpConnections()
{
    Console.WriteLine("Active TCP Connections");
    IPGlobalProperties properties = IPGlobalProperties.GetIPGlobalProperties();
    TcpConnectionInformation[] connections = properties.GetActiveTcpConnections();
    foreach (TcpConnectionInformation c in connections)
    {
        Console.WriteLine("{0} <==> {1}",
                          c.LocalEndPoint.ToString(),
                          c.RemoteEndPoint.ToString());
    }
}

来源:
https://msdn.microsoft.com/en-us/library/system.net.networkinformation.ipglobalproperties.getactivetcpconnections.aspx



上面的代码的短版。
foreach (var c in IPGlobalProperties.GetIPGlobalProperties().GetActiveTcpConnections())
{
    ...
}

将所有机器连接到网络

进行ping扫描可能会更好。需要几秒钟来完成254个ip地址。解决方案在这里https://stackoverflow.com/a/4042887/3645638

关于c# - 如何在不使用ping方法的情况下将机器的IP地址连接到我的PC C#,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/44276884/

10-12 12:40