说,我的机器上有2个或更多活动网卡。我正在使用一个c#应用程序,我从中调用异步服务。 我希望能够确定我在调用此服务时使用的ipaddress。
例如,我的两个活动ip是192.168.10.5和192.168.5.7,服务ipaddress是192.168.7.12。
答案 0 :(得分:1)
你可以试试这个:
public static string GetExternalIP()
{
try
{
using (WebClient client = new WebClient())
{
string ip = client.DownloadString("http://whatismyip.com/automation/n09230945.asp");
return ip;
}
}
catch (Exception) { return null; }
}
代码从http://www.hackcommunity.com/Thread-ASKING-FOR-REP-ROCKY-PART-2
略微改写答案 1 :(得分:0)
嗯。我认为没有托管解决方案。 GetBestInterface和/或GetBestRoute似乎是在WIn32 API中开始的正确位置(可能是GetBestRoute,通过阅读它)。
此外,由于互联网和动态路由这一奇妙的事情变幻莫测,当你得出答案时,它可能已经改变了。
最好为服务提供一个IP地址列表,并让它使用任何一个工作。
修改的
或者您可以使用WCF callbacks,并让WCF完成大部分艰苦的工作(我没有在WCF本身花费很多时间,也不确定它会为您做多少工作)