Get the Ip in use



我对获取电脑的ip地址有点困惑。我有一个winforms应用程序在多台电脑中运行。在某些情况下,该应用程序必须向其他应用程序发送消息。为此,我将运行该应用程序的电脑的信息写入数据库,其中的数据是IP地址。这个想法是使用WCF来向正在运行的应用程序通信和广播消息。所以,问题是我如何才能得到有效的Ip地址。用以太网ip地址、wi-fi地址和vmware地址对笔记本进行映像。我必须从中选择哪一个?

这是我使用的代码。但在笔记本电脑的情况下,它正在返回vmware地址,这是无用的。

private String GetMyIp()
{
    String ipAddress = 
      System.Net.Dns.GetHostEntry(
         System.Net.Dns.GetHostName())
      .AddressList.First(i => i.AddressFamily.Equals(
         System.Net.Sockets.AddressFamily.InterNetwork))
      .ToString();
    return ipAddress;
 }

其主要思想是获取具有连接的ip地址。希望是明确的。

提前感谢。

除非你建立连接,否则你的计算机要确定要使用哪张卡需要做很多工作。。或确实使用过。

这是我做这件事的方式。我建立了一个连接,然后问,它过去是怎么做的,实际上我使用了你的部分代码,它似乎确实有效

当然,连接的另一端也可以以类似的方式检查远程(例如客户端)地址。。

class Program
{
    static void Main(string[] args)
    {
    TcpClient t = new TcpClient("www.microsoft.com", 80);

    Console.WriteLine(GetMyIp(t.Client.LocalEndPoint.AddressFamily));
    t.Close();
}
static private String GetMyIp(AddressFamily addr)
{
    String ipAddress = System.Net.Dns.GetHostEntry(
        System.Net.Dns.GetHostName()
        )
        .AddressList.First(i => i.AddressFamily.Equals(addr)).ToString();
    return ipAddress;
} 

}

枚举活动网络连接时需要考虑以下几点。如果你有wifi适配器和局域网连接,并且两者都处于活动状态,你希望运行的应用程序使用哪个?

为什么不使用中央WCF发布子订阅方法的良好实践,让正在运行的客户端请求中央WCF服务,并可能在WCF服务器端存储EndPoint地址?

最新更新