获取IP地址

2023-12-13

In C#:

IPHostEntry IPHost = Dns.GetHostEntry(Dns.GetHostName());

for (int i = 0; i < IPHost.AddressList.Length; i++)
{
    textBox1.AppendText("My IP address is: " 
        + IPHost.AddressList[i].ToString() + "\r\n");
}

在此代码中,IPHostEntry变量包含计算机的所有 IP 地址。 现在,据我所知,Windows vista返回一些IP地址,有些是十六进制的,有些是十进制的,等等。

问题是所需的十进制表示法改变了它在IPHostEntry变量:它最初发生在最后一个位置,因此可以使用以下代码访问:

string ipText = IPHost.AddressList[IPHost.AddressList.Length - 1].ToString();

但是,更改计算机的 IP 地址后,它现在出现在倒数第二个位置,因此需要使用以下代码进行访问:

string ipText = IPHost.AddressList[IPHost.AddressList.Length - 2].ToString();

是否有任何代码可以以十进制形式检索 IP 地址,无论其在 IP 地址中的位置如何IPHostEntry多变的??


假设您只需要 IPv4 地址,我目前正在使用这段代码(为了发布而进行了一些修改),它对于我的使用来说足够强大。只需对结果调用 ToString 即可获取地址:

// return the first IPv4, non-dynamic/link-local, non-loopback address
public static IPAddress GetIPAddress()
{
    IPAddress[] hostAddresses = Dns.GetHostAddresses("");

    foreach (IPAddress hostAddress in hostAddresses)
    {
        if (hostAddress.AddressFamily == AddressFamily.InterNetwork &&
            !IPAddress.IsLoopback(hostAddress) &&  // ignore loopback addresses
            !hostAddress.ToString().StartsWith("169.254."))  // ignore link-local addresses
            return hostAddress;
    }
    return null; // or IPAddress.None if you prefer
}

169.254.* 部分可能看起来像黑客,但记录在IETF RFC 3927.

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

获取IP地址 的相关文章

随机推荐

  • 如何在大熊猫数据框中显示所有列的名称?

    我有一个由数百列组成的数据框 我需要查看所有列名称 我做了什么 In 37 data all2 columns 输出是 Out 37 Index customer id incoming outgoing awan bank family
  • 在 MAC OSX 和 Ubuntu 上的 F# 中,我在 4.0 中运行 FSI 时出错

    我需要 F 中的 System Numerics EDIT我认为问题是 fsi 可以与 4 0 运行时一起运行吗 如果可以 我该如何配置它 我在 Fsharp 4 0 目录中运行 mono bin Fsi 在 OSX 10 6 4 和 Ub
  • 将键盘表情符号转换为自定义 png,反之亦然

    这是一个直接而简单的问题 我怎样才能实现这两件事 FIRST 输入 嘿我在微笑 输出 hey I m smiling span class smile span 反之亦然 SECOND 输入 嘿我在微笑 smile 输出 嘿我在微笑 现在我
  • 无法在无服务器和 DynamoDB/Cognito/API 网关的 lambda 策略中使用 ${cognito-identity.amazonaws.com:sub}

    客观的 使用 Cognito 进行身份验证 使用下面的 serverless yml 配置 点击经过身份验证的端点 GET users 以触发 lambda 作业 基于IAM策略 限制基于cognito用户查询的DynamoDB表的访问co
  • 比较旋转图像

    我正在寻找一种方法来比较几乎相同 相似度超过 95 但可以绕中心轴旋转的图像 我对整个计算机图形 视觉领域很陌生 不太确定是否有现成的工具或系统 或者即使这是否是正确的堆栈交换 目前 我正在研究使用 C 生成位图直方图 然后通过 Panda
  • VBA:为什么我的 INSERT 代码不起作用?

    几周前我就开始工作了 但现在我不确定我做了什么导致它不再工作了 我什至没有收到错误消息来弄清楚可能出了什么问题 当我单击在表中插入行的按钮时 没有任何反应 表单被清除并重新查询表 但代码的 INSERT 部分不执行任何操作 Public S
  • 如何将文件从一个位置复制到另一个位置?

    我想在 Java 中将文件从一个位置复制到另一个位置 做这个的最好方式是什么 这是我到目前为止所拥有的 import java io File import java io FilenameFilter import java util A
  • Powershell运行时

    我在 Windows 8 下运行 VS 2010 安装 NuGet 并运行包管理器控制台后 我收到以下消息 Error The Package Manager Console requires PowerShell 2 0 runtime
  • 使用猫鼬进行 $lookup

    我有两个集合 例如清单和任务 两个模式如下所示 清单架构如下所示 id 5b7d0f77e231b6b530b0ee5a audit checklist type Weekly id 5b7d3f33e7a57f38084efb09 aud
  • 使用 JavaScript 动态过滤 HTML 表的行

    所以我有这张表 table border 1 align center tr td Broj pu td td Naziv pu td td ID td td Naselje td td zupanija td tr tr td td tr
  • 通过填充空格将字符串居中至指定长度

    我有一个名称向量 如下所示 x lt c Marco John Jonathan 我需要通过添加前导空格和尾随空格对其进行格式化 以便名称以 10 个字符的字符串居中 gt output 1 Marco John Jonathan 我希望有
  • Django - url 的动态视图

    我想根据 url 加载特定视图 例如 url r channel P
  • 如何调用与成员函数同名的内联友元函数?

    如此处所述C 11 风格的 SFINAE 和模板实例化上的函数可见性类成员函数掩盖了自由函数 使用完全限定名称通常是有效的 但是我在使用内联声明的其他类的友元函数时遇到了困难 考虑以下示例 namespace N struct C frie
  • 在 python 中追加到文件后没有 EOL

    我尝试使用以下代码使用 python 附加到文件 with open test txt a as myfile myfile write appended text 问题是 当我用 vim 打开文件时 我在底部收到来自 vim 的消息 te
  • 在 C 中使用 void* 指针的缺点

    使用起来有很多缺点void 在C中 内存相关 类型相关 效率方面 尽管如此 我们还是经常使用它们 因为它们提供了灵活性 列出使用的缺点 缺点void 以及 C 中的首选解决方案 如果可能 EDIT 请访问以下链接 http attracti
  • IIS FTP 是否包含用于检测文件上传何时完成的 API?

    我想使用 IIS FTP 服务器 但我需要能够判断特定用户的文件上传何时完成 我不想依赖于直接在 Windows 中监视文件更改 因为我认为我无法判断文件上传是否真正完成或已中止并且可能稍后完成 您可以使用自定义日志记录提供程序来执行此操作
  • 循环浏览网页并复制数据

    我为一位朋友创建了这个脚本 该脚本循环浏览一个房地产网站并为她获取电子邮件地址 用于促销 该网站免费提供它们 但一次获取一个很不方便 第一个脚本将每个页面的数据转储到名为 webdump 的 txt 文件中 第二个脚本从第一个 txt 文件
  • 如何使用yaml在doctrine2中模拟继承?

    如何以yaml方式声明doctrine2继承 我在学说文档中没有找到任何与此相关的代码片段 示例或食谱文章 当我尝试以doctrine1方式进行操作时 我收到一个错误 指出该实体没有主键 Thanks 尝试使用以下方法进行简单的模型继承ex
  • NVIDIA Fermi 中的 L2 缓存

    在查看NVIDIA Fermi架构中的性能计数器名称 cuda的doc文件夹中的Compute profiler txt文件 时 我注意到对于L2缓存未命中 有两个性能计数器 l2 subp0 read sector misses和l2 s
  • 获取IP地址

    In C IPHostEntry IPHost Dns GetHostEntry Dns GetHostName for int i 0 i lt IPHost AddressList Length i textBox1 AppendTex