我想要使用我的网站的客户的公共IP地址.下面的代码显示了LAN中的本地IP,但我想要客户端的公共IP.
//get mac address
NetworkInterface[] nics = NetworkInterface.GetAllNetworkInterfaces();
String sMacAddress = string.Empty;
foreach (NetworkInterface adapter in nics)
{
if (sMacAddress == String.Empty)// only return MAC Address from first card
{
IPInterfaceProperties properties = adapter.GetIPProperties();
sMacAddress = adapter.GetPhysicalAddress().ToString();
}
}
// To Get IP Address
string IPHost = Dns.GetHostName();
string IP = Dns.GetHostByName(IPHost).AddressList[0].ToString();
Run Code Online (Sandbox Code Playgroud)
输出:
IP地址:192.168.1.7
请帮我获取公共IP地址.
我需要使用C#和.NET 3.5从我的程序中获取计算机的实际本地网络IP地址(例如192.168.0.220).在这种情况下,我不能只使用127.0.0.1.
最好的方法是什么?
我有一个 Azure Web 应用程序,它通过 VPN/VNET 集成与 3rd 方系统进行通信。该通信的一部分依赖于解析 DNS 名称的能力。
当应用程序部署到虚拟机时,我们只需使用如下条目更新主机文件
123.45.67.89 RPGMDR500-0R
并且通讯正常。由于通信的设置方式,我不能只在代码中使用 IP 地址。在通信中,DNS 名称被发回给我们,我们必须将其解析为该 IP 地址。
有没有办法只用一个应用服务来做到这一点?实际上,我们希望应用程序将此自定义 dns 名称解析为 ip 地址。
更新 我更新了我们的 VNET DNS 服务器以使用虚拟机设置进行 DNS。
使用 nameresolver,我可以看到 DNS 正在访问应用程序服务,但前提是我指定了 DNS IP 地址。默认情况下,它仍在使用默认服务器(不确定如何)。(对于停电很抱歉,不确定这些数据有多敏感)。
我想我可能会遇到这样的情况this is not possible但是如果不是这样的话......
我编写了一个ASP .NET MVC 3应用程序,我正在使用Request.UserHostName属性,然后将返回的值传递给Dns.GetHostEntry,以找出当前连接的客户端的所有可能的IP和主机名,例如:
var clientAddress = Request.UserHostName;
var entry = Dns.GetHostEntry(clientAddress);
Run Code Online (Sandbox Code Playgroud)
通常这很好,除了我有一个案例,我从Dns.GetHostEntry调用得到"主机未找到" SocketException.
真正奇怪的是,从Request.UserHostName属性返回的地址不是公共地址或任何私有地址.为了证明这一点,我在有问题的客户端机器上运行了这段代码......
var host = Dns.GetHostEntry(Dns.GetHostName());
foreach (var a in host.Aliases)
{
Console.WriteLine("alias '{0}'", a);
}
foreach (var a in host.AddressList)
{
Console.WriteLine("ip address '{0}'", a);
}
// ...from http://stackoverflow.com/a/2353177/1039947...
String direction = "";
WebRequest request = WebRequest.Create("http://checkip.dyndns.org/");
using (WebResponse response = request.GetResponse())
{
using (var stream = new StreamReader(response.GetResponseStream())) …Run Code Online (Sandbox Code Playgroud) 我一直在浏览很多与我的问题类似的问题:人们想 100% 确定地知道他们的外部 IP 地址(当我请求互联网连接时,我的 ISP 分配给我的地址)。好吧,这些问题最具体的答案是:除非您询问某些网络服务,否则您无法知道自己的互联网 IP 地址。
我的路由器怎么知道这一点?我希望它从 ISP 本身获得它,并将其“写下来”。
所以,我的问题是:所有路由器之间是否有一种通用的、标准化的方式来要求他们向我提供该信息(即由我的 ISP 签名的我的 IP 地址)?即使它涉及 COM 互操作性或调用非托管代码的东西,我也不介意。
详细说明:我想要一种方法来检索 ISP 分配给我的 IP 地址,该地址 100% 准确,这意味着我只想要那个地址;不是其他接口或其他任何内容的地址列表。我真的很难相信这是不可能实现的。
编辑:很抱歉,其他问题与我问的问题无关。我问路由器是否有某种标准 API 来查询它的公共 IP。我不明白这些答案如何回答我的问题。
已解决:有这样的标准。这是一个称为 WANIPConnection 的 UPnP 标准。它有一个名为 GetExternalIPAddress 的“操作”。不过,在 C# 程序中使用它似乎真的很困难。但我正在编辑我的问题,以便将来阅读它的任何人都会知道答案是肯定的。这是 UPnP 论坛http://www.upnp.org/的链接,以防有人想进一步了解这一点。还有这个开源项目http://opentools.homeip.net/dev-tools-for-upnp。最后一个项目有很多小软件(工具),并且所有源代码(用 C 或 C++ 编写)都可用。我不知道如何解决我的问题,因为我不是那么聪明,但同样,如果有人想进一步研究这个问题,DevToolsForUPnP 项目是另一件值得检查的事情。
我有一个传入的FTP请求.我想获取传入FTP请求中提到的FTP服务器的IP地址.我必须针对列入白名单的FTP服务器进行验证.
任何帮助将不胜感激..
我的代码如下:
try
{
IPHostEntry host;
string localIP = "?";
host = Dns.GetHostEntry(uri);
foreach (IPAddress ip in host.AddressList)
{
// we are only interested in IPV4 Addresses
if (ip.AddressFamily == AddressFamily.InterNetwork)
{
localIP = ip.ToString();
}
}
return localIP;
}
catch (Exception exception)
{
throw;
}
Run Code Online (Sandbox Code Playgroud) 任何人都可以解释或展示如何获得通过手机的便携式WI-FI热点连接的计算机(或其他设备)的IP地址?
我从这里尝试了以下代码
public String getLocalIpAddress() {
try {
for (Enumeration<NetworkInterface> en = NetworkInterface.getNetworkInterfaces(); en.hasMoreElements();) {
NetworkInterface intf = en.nextElement();
for (Enumeration<InetAddress> enumIpAddr = intf.getInetAddresses(); enumIpAddr.hasMoreElements();) {
InetAddress inetAddress = enumIpAddr.nextElement();
if (!inetAddress.isLoopbackAddress()) {
return inetAddress.getHostAddress().toString();
}
}
}
} catch (SocketException ex) {
Log.e(LOG_TAG, ex.toString());
}
return null;
}
Run Code Online (Sandbox Code Playgroud)
但这只返回默认网关.
我还在SO上找到了另一个例子,它可能只是解决方案,但我不知道如何将它应用到我的情况中.具体来说,我无法看到该代码中IP地址的位置.
我在NAT路由器后面的本地网络上有一台计算机.我有一些192.168.0.x地址,但我真的想知道我的公共 IP地址,而不是提到的
要么
我需要C#代码.
可能吗?如果是这样,怎么样?
c# ×8
.net ×4
ip-address ×4
asp.net ×2
asp.net-mvc ×2
.net-3.5 ×1
android ×1
azure ×1
dns ×1
ftp ×1
geolocation ×1
ip ×1
networking ×1
wifi ×1