惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

S
Security @ Cisco Blogs
罗磊的独立博客
宝玉的分享
宝玉的分享
Last Week in AI
Last Week in AI
T
The Blog of Author Tim Ferriss
美团技术团队
T
Tailwind CSS Blog
博客园 - 三生石上(FineUI控件)
博客园 - Franky
G
Google Developers Blog
Jina AI
Jina AI
Stack Overflow Blog
Stack Overflow Blog
H
Hackread – Cybersecurity News, Data Breaches, AI and More
V
Visual Studio Blog
腾讯CDC
S
SegmentFault 最新的问题
Recent Announcements
Recent Announcements
博客园 - 叶小钗
Microsoft Security Blog
Microsoft Security Blog
雷峰网
雷峰网
L
LangChain Blog
Vercel News
Vercel News
Forbes - Security
Forbes - Security
PCI Perspectives
PCI Perspectives
N
News | PayPal Newsroom
S
Security Affairs
K
KPMG report finds enterprise disconnect between AI and its ROI | CIO
博客园 - 司徒正美
J
Java Code Geeks
Recent Commits to openclaw:main
Recent Commits to openclaw:main
Hacker News: Ask HN
Hacker News: Ask HN
Schneier on Security
Schneier on Security
A
About on SuperTechFans
Attack and Defense Labs
Attack and Defense Labs
Google Online Security Blog
Google Online Security Blog
aimingoo的专栏
aimingoo的专栏
MongoDB | Blog
MongoDB | Blog
钛媒体:引领未来商业与生活新知
钛媒体:引领未来商业与生活新知
酷 壳 – CoolShell
酷 壳 – CoolShell
Cloudbric
Cloudbric
B
Blog
C
CXSECURITY Database RSS Feed - CXSecurity.com
P
Proofpoint News Feed
D
DataBreaches.Net
OSCHINA 社区最新新闻
OSCHINA 社区最新新闻
Threat Intelligence Blog | Flashpoint
Threat Intelligence Blog | Flashpoint
B
Blog RSS Feed
奇客Solidot–传递最新科技情报
奇客Solidot–传递最新科技情报
让小产品的独立变现更简单 - ezindie.com
让小产品的独立变现更简单 - ezindie.com
N
News and Events Feed by Topic

博客园 - sPhinX

如何解决在Win11下卸载McgsPro失败的问题 如何离线安装WinDbg Preview 敏捷软件开发 原则、模式与实践 第9章的例子程序(C#版) Akavache简明使用指南 Oracle存储过程解析XML内容 P/Invoke继续谈 有意思的案例: 的问题 dnSpy - 让调试镜像文件的工作变得轻松点 dnSpy调试IIS(w3wp进程) Xilium.CefGlue与SingleProcess rocketmq-client-cpp(2.0.1)编译指南 RocketMQ .NET客户端的那些坑 P/Invoke今日谈 .NET编译问题汇总 动态的世界 使用ProcDump自动生成Dump文件 Process.Start可能无法选中指定文件的问题 将exe和dll打包为一个exe文件 .NET异步资料收集
获取本地IP
sPhinX · 2019-08-13 · via 博客园 - sPhinX
 1 public string GetLocalIP()
 2         {
 3             try
 4             {
 5                 // 无法处理存在VMware虚拟机的情况
 6                 //string HostName = Dns.GetHostName(); //得到主机名
 7                 //IPHostEntry IpEntry = Dns.GetHostEntry(HostName);
 8                 //for (int i = 0; i < IpEntry.AddressList.Length; i++)
 9                 //{
10                 //    //从IP地址列表中筛选出IPv4类型的IP地址
11                 //    //AddressFamily.InterNetwork表示此IP为IPv4,
12                 //    //AddressFamily.InterNetworkV6表示此地址为IPv6类型
13                 //    if (IpEntry.AddressList[i].AddressFamily == AddressFamily.InterNetwork)
14                 //    {
15                 //        return IpEntry.AddressList[i].ToString();
16                 //    }
17                 //}
18 
19                 // Get a list of all network interfaces (usually one per network card, dialup, and VPN connection) 
20                 NetworkInterface[] networkInterfaces = NetworkInterface.GetAllNetworkInterfaces();
21                 StringBuilder sb = new StringBuilder();
22                 foreach (NetworkInterface network in networkInterfaces)
23                 {
24                     // 排除掉不可用的网络接口
25                     if (network.OperationalStatus != OperationalStatus.Up)
26                         continue;
27 
28                     // Read the IP configuration for each network 
29                     IPInterfaceProperties properties = network.GetIPProperties();
30 
31                     // 排除掉没有网关的地址(VMware)
32                     var gatewayAddr = properties.GatewayAddresses.FirstOrDefault();
33                     if (gatewayAddr == null || gatewayAddr.Address.ToString().Equals("0.0.0.0"))
34                         continue;
35 
36                     // Each network interface may have multiple IP addresses 
37                     foreach (IPAddressInformation address in properties.UnicastAddresses)
38                     {
39                         // We're only interested in IPv4 addresses for now 
40                         if (address.Address.AddressFamily != AddressFamily.InterNetwork)
41                             continue;
42 
43                         // Ignore loopback addresses (e.g., 127.0.0.1) 
44                         if (IPAddress.IsLoopback(address.Address))
45                             continue;
46 
47                         return address.Address.ToString();
48                     }
49                 }
50                 return "";
51             }
52             catch (Exception)
53             {
54                 return "";
55             }
56         }

获取一个接口上有多个地址的代码

 1 public static string[] GetAllLocalIPv4(NetworkInterfaceType _type)
 2 {
 3     List<string> ipAddrList = new List<string>();
 4     foreach (NetworkInterface item in NetworkInterface.GetAllNetworkInterfaces())
 5     {
 6         if (item.NetworkInterfaceType == _type && item.OperationalStatus == OperationalStatus.Up)
 7         {
 8             foreach (UnicastIPAddressInformation ip in item.GetIPProperties().UnicastAddresses)
 9             {
10                 if (ip.Address.AddressFamily == AddressFamily.InterNetwork)
11                 {
12                     ipAddrList.Add(ip.Address.ToString());
13                 }
14             }
15         }
16     }
17     return ipAddrList.ToArray();
18 }

posted on 2019-08-13 17:32  sPhinX  阅读(317)  评论()    收藏  举报