获取客户端机器的IP地址

Posted

技术标签:

【中文标题】获取客户端机器的IP地址【英文标题】:get ip address of clients machine 【发布时间】:2011-07-22 15:26:21 【问题描述】:

我们在实验室有 10 台计算机,我们设置了所有连接到 LAN 的计算机,所以我们 可以共享文件,我的电脑作为主电脑,我只想获取所有 连接到主计算机(即我的计算机)的计算机的 IP 地址并列出它们 我的代码是

    System.Diagnostics.Process p = new System.Diagnostics.Process();
    p.StartInfo.FileName = "cmd ";
    p.StartInfo.UseShellExecute = false;
    p.StartInfo.Arguments = "/C net view";
    p.StartInfo.RedirectStandardOutput = true;
    p.Start();
    String output = p.StandardOutput.ReadToEnd();
    char[] delimiters = new char[]  '\n', '\\' ;
    string[] s = output.Split(delimiters, StringSplitOptions.RemoveEmptyEntries);
    string hostName = Dns.GetHostName();
    IPHostEntry IPHost = Dns.GetHostEntry(hostName);
    Console.WriteLine(IPHost.HostName); // Output name of web host
    IPAddress[] address = IPHost.AddressList; // get list of IP address
    // Console.WriteLine("List IP 0 :", IPHost.HostName);
    if (address.Length > 0)
    
        for (int i = 0; i < address.Length; i++)
        
            Console.WriteLine(address[i]);
        
    


    p.WaitForExit();
    int z = s.Length - 5;

    string[] str1 = new string[z];
   // int i = 0;
    char[] saperator =  ' ' ;
    for (int j = 3; j < s.Length - 2; j++)
    
        //Console.WriteLine(s[i]);
       // str1[i] = (s[j].ToString()).Split(saperator)[0];
       // Console.WriteLine("IP Address 0: 1 ", i, addr[i].ToString());
    
    //Console.WriteLine(output);

    s = output.Split(new string[]  "\n,\\" , StringSplitOptions.None);

    //Console.WriteLine(s[i]);
    //Console.WriteLine(output);
   // Console.WriteLine("IP Address : 1 ", i, AddressList[i].ToString());
    Console.ReadLine();

但是我得到了我机器的 ip 地址,我想在实验室中获得 10 台机器的 ip 地址。

【问题讨论】:

你能编辑你的帖子并重新格式化代码吗? 【参考方案1】:

不传递主机名,而是传递net view的结果。

foreach (string hostName in hostNames)

    //string hostName = Dns.GetHostName();
    IPHostEntry entry = Dns.GetHostEntry(hostName);
    Console.WriteLine(entry.HostName); // output name of web host
    IPAddress[] addresses = entry.AddressList; // get list of IP addresses
    foreach (var address in addresses)
    
        Console.WriteLine(address);
    

【讨论】:

以上是关于获取客户端机器的IP地址的主要内容,如果未能解决你的问题,请参考以下文章

如何通过PHP中的IP地址获取时区[重复]

如何通过平衡器获取客户端IP地址

C#如何在页面中获取本机的外网IP地址

在启用了IPV6的机器上获取客户端ipv4地址

C# - 连接到 (RAS) *** 时如何获取 IP 地址

如何在 Java 中使用 RESTful Web 服务获取远程/客户端 IP 地址?