说,我的机器上有2个或更多的活动网卡。我正在使用一个C#应用程序,我从中调用异步服务。 我希望能够确定调用此服务时我使用了哪个ipaddress。确定哪些IP地址已被用于在c#中打开一个url
例如,我的两个活动ip是192.168.10.5和192.168.5.7,服务ipaddress是192.168.7.12。
说,我的机器上有2个或更多的活动网卡。我正在使用一个C#应用程序,我从中调用异步服务。 我希望能够确定调用此服务时我使用了哪个ipaddress。确定哪些IP地址已被用于在c#中打开一个url
例如,我的两个活动ip是192.168.10.5和192.168.5.7,服务ipaddress是192.168.7.12。
你可以试试这个:
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
嗯略有返工。我不认为有一个管理的解决方案。 GetBestInterface和/或GetBestRoute似乎是在WIn32 API中开始的正确位置(可能是GetBestRoute,通过我的阅读)。
另外,由于互联网和动态路由这些奇妙的事情的变幻莫测,当你计算出答案时,它可能已经改变。
最好给服务提供一个IP地址列表,让它使用任何一个工作。
编辑
或者您可以使用WCF callbacks,使WCF做最困难的工作(我不是在WCF花了很多时间本身,不知道有多少工作,它会为你在这里)
可能重复[在WCF 3.0中获取客户端IP地址](http://stackoverflow.com/questions/93162/obtaining-client-ip-address-in-wcf-3-0) – Timores 2010-10-15 09:40:50
这个问题略有不清楚 - 你是否试图从客户或服务中确定这些信息? – 2010-10-15 09:59:38
从客户端确定它,所以我把它发送到服务器,所以服务器可以联系客户端使用这个地址 – Zee99 2010-10-15 10:47:45