确定哪个 IP 地址已用于在 C# 中打开 URL

发布于 2024-09-27 17:55:57 字数 144 浏览 1 评论 0原文

假设我的机器上有 2 个或更多活动网卡。我正在使用 ac# 应用程序,从中调用异步服务。 我希望能够确定在调用此服务时使用了哪个 IP 地址。

例如,我的两个活动IP是192.168.10.5和192.168.5.7,服务IP地址是192.168.7.12。

Say, I have 2 or more active network cards on my machine. i am using a c# application from which i am calling an asynchronous service.
i want to be able to determine which ipaddress have i used when calling this service.

for example, my two active ip's are 192.168.10.5 and 192.168.5.7 and the service ipaddress is 192.168.7.12.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

灵芸 2024-10-04 17:55:57

您可以尝试以下操作:

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

You can try this:

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

Code slightly reworked from http://www.hackcommunity.com/Thread-ASKING-FOR-REP-ROCKY-PART-2

゛时过境迁 2024-10-04 17:55:57

唔。我认为没有托管解决方案。 GetBestInterface 和/或 GetBestRoute 似乎是正确的起点WIn32 API(根据我的阅读,可能是 GetBestRoute)。

另外,由于互联网和动态路由这个奇妙事物的变幻莫测,当您得出答案时,它可能已经发生了变化。

最好为服务提供 IP 地址列表,并让它使用有效的一个。

编辑

或者您可以使用WCF回调,并进行WCF完成大部分艰苦的工作(我没有在 WCF 本身上花费很多时间,不确定它在这里会为您做多少工作)

Hmm. I don't think there's a managed solution. GetBestInterface and/or GetBestRoute would seem to be the right places to start in the WIn32 API (probably GetBestRoute, by my reading of it).

Also, due to the vagaries of this wonderful thing that is the internet, and dynamic routing, by the time you've worked out the answer, it may have changed.

It may be best to provide the service with a list of IP addresses, and let it use whichever one works.

Edit

Or you may be able to use WCF callbacks, and make WCF do most of the hard work (I've not spent a lot of time in WCF itself, not sure how much work it would do for you here)

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文