确定在c#中用于打开URL的IP地址

时间:2010-10-15 09:16:01

标签: c# .net wcf networking

说,我的机器上有2个或更多活动网卡。我正在使用一个c#应用程序,我从中调用异步服务。 我希望能够确定我在调用此服务时使用的ipaddress。

例如,我的两个活动ip是192.168.10.5和192.168.5.7,服务ipaddress是192.168.7.12。

2 个答案:

答案 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本身花费很多时间,也不确定它会为您做多少工作)