我对获取PC的IP地址有点困惑。我有一个winforms应用程序在多个pc运行。某些环境中的应用程序必须向其他应用程序发送消息。为此,我向数据库写入了有关运行应用程序的PC的信息,其中数据是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地址。希望明确。
先谢谢。
答案 0 :(得分: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;
}
}
答案 1 :(得分:1)
枚举活动网络连接时需要考虑几件事。如果您有wifi适配器和LAN连接,并且两者都是活动的,您希望运行的应用程序使用?
为什么不使用中央WCF发布 - 子进程方法的良好做法,让正在运行的客户端请求中央WCF服务并且可能在WCF服务器端存储EndPoint地址?