0

我对获取 PC 的 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地址。希望清楚。

提前致谢。

4

2 回答 2

1

好吧,除非您建立连接,否则您的计算机需要做很多工作才能确定它将使用哪张卡..或确实使用过。

这是我做的方式..我建立了一个连接然后问,它以前是做什么的,实际上我使用了你的部分代码,它似乎确实有效

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

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;
} 

}

于 2012-07-19T13:26:37.763 回答
1

枚举活动网络连接时需要考虑几件事。如果您有 wifi 适配器和 LAN 连接并且两者都处于活动状态,您希望正在运行的应用程序使用哪个?

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

于 2012-07-19T13:29:41.120 回答