🗣 Wd提问: c# 获取本地ip
🤖 Ai回答: 在 C中获取本地 IP 地址(特别是本机的 IPv4 地址),可以使用 `System.Net` 和 `System.Net.NetworkInformation` 命名空间中的类。以下是几种常见的方法,适用于不同的场景。
✅ 方法一:获取本机所有 IPv4 地址(推荐)
csharp
using System;
using System.Linq;
using System.Net;
using System.Net.NetworkInformation;
class Program
{
static void Main()
{
// 获取主机名
string hostName = Dns.GetHostName();
// 获取主机的所有IP地址
IPAddress[] addresses = Dns.GetHostAddresses(hostName);
// 筛选出 IPv4 地址并排除环回地址(127.0.0.1)
var localIps = addresses
.Where(ip = ip.AddressFamily == System.Net.Sockets.AddressFamily.InterNetwork)
.Where(ip = !IPAddress.IsLoopback(ip))
.ToList();
foreach (var ip in localIps)
{
Console.WriteLine(Local IP: + ip.ToString());
}
}
}
说明:
`Dns.GetHostAddresses()` 获取本机所有网络接口绑定的 IP。
过滤出 `AddressFamily.InterNetwork` 表示 IPv4。
排除 `IsLoopback` 避免输出 `127.0.0.1`。
✅ 方法二:通过 NetworkInterface 获取(更精确控制)
如果你需要更详细的网络信息(比如只取启用的网卡、非虚拟网卡等):
csharp
using System;
using System.Linq;
using System.Net;
using System.Net.NetworkInformation;
class Program
{
static void Main()
{
NetworkInterface[] interfaces = NetworkInterface.GetAllNetworkInterfaces();
foreach (NetworkInterface ni in interfaces)
{
// 只处理启用的、非虚拟的以太网或无线网卡
if (ni.OperationalStatus == OperationalStatus.Up &&
ni.NetworkInterfaceType != NetworkInterfaceType.Loopback &&
(ni.NetworkInterfaceType == NetworkInterfaceType.Ethernet
ni.NetworkInterfaceType == NetworkInterfaceType.Wireless80211))
{
IPInterfaceProperties ipProps = ni.GetIPProperties();
foreach (UnicastIPAddressInformation addr in ipProps.UnicastAddresses)
{
if (addr.Address.AddressFamily == System.Net.Sockets.AddressFamily.InterNetwork)
{
Console.WriteLine(IP Address: + addr.Address);
Console.WriteLine(Subnet Mask: + addr.IPv4Mask);
}
}
}
}
}
}
优点:可过滤真实物理网卡,避免 Docker、虚拟机、VPN 等虚拟适配器干扰。
✅ 方法三:获取连接外网时使用的出口 IP(即默认网关使用的 IP)
有时候你想知道“当前上网用的是哪个 IP”,可以通过路由判断:
csharp
using System;
using System.Net;
using System.Net.Sockets;
class Program
{
static void Main()
{
using (var socket = new Socket(AddressFamily.InterNetwork, SocketType.Dgram, ProtocolType.Udp))
{
socket.Connect(8.8.8.8, 65530); // Google DNS,任意公网IP都行
IPEndPoint endPoint = socket.LocalEndPoint as IPEndPoint;
Console.WriteLine(Outgoing IP: + endPoint.Address);
}
}
}
⚠️ 注意:这个方法会创建一个 UDP 连接来探测系统选择的出口网卡 IP,但不会真正发送数据。
📌 总结
| 方法 | 用途 |
| `Dns.GetHostAddresses()` | 快速获取本机所有 IPv4 地址 |
| `NetworkInterface` 类 | 精确控制,筛选真实网卡 |
| UDP Socket 探测 | 获取实际用于访问外网的 IP |
💡 小贴士
如果你运行在局域网中,得到的通常是 `192.168.x.x`、`10.x.x.x` 或 `172.16.x.x` 开头的私有 IP。
若需获取公网 IP,需调用外部 API,例如:
csharp
using (var client = new WebClient())
{
string publicIp = client.DownloadString(http://api.ipify.org);
Console.WriteLine(Public IP: + publicIp);
}
如有特定需求(如只取 WiFi 的 IP、忽略虚拟机网卡等),欢迎补充场景,我可以提供更定制化的代码。
📣 商家广告:





0
IP地址: 183.197.183.67
搜索次数: 0
提问时间: 2025-11-07 00:51:46
🛒 域名购买:
g-a.com.cn
990.net.cn
hangdang.net
45.gold
4.bj.cn
cgbc.cn
txqg.cn
53.biz
46.hk
37.gold
❓️ 热门提问:
net是什么组织的域名
买域名钱给谁了
美国krypt机房
查询服务器
windows云服务器使用教程
国别域名 注册
搬瓦工教程
crm服务器
电脑主机价位多少最合理
二维码制作网
豌豆Ai站群搜索引擎系统
🌐 域名评估:
w-t.cn
o.gx.cn
xiaomi.com
deepseek.city
gu.cx
aaaa.ah.cn
realenglish.cn
urtj.cn
635.net.cn
evtol.ha.cn
⛏ 最新挖掘:
凯里酸汤鱼
贵阳烤脑花
都匀毛尖茶
花溪牛肉粉
贵阳烤生蚝
贵阳烤豆腐
贵阳纸包鱼
贵阳特色菜
🖌 热门作画:
🤝 关于我们:
豌豆Ai
域名
建站
站群
留痕
推广
评估
源码
开发Ai
工具
日记
价格
加盟
广告
流量
留言
联系
🗨 加入群聊:
🔗 友情链接:
検索エンジン おすすめ
贵阳电工维修电话
ai提问
🧰 站长工具:
Ai工具 whois查询 搜索
📢 温馨提示:本站所有问答由Ai自动创作,内容仅供参考,若有误差请用“联系”里面信息通知我们人工修改或删除。
👉 技术支持:本站由豌豆Ai提供技术支持,使用的最新版:《豌豆Ai站群搜索引擎系统 V.25.10.25》搭建本站。