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

推荐订阅源

酷 壳 – CoolShell
酷 壳 – CoolShell
H
Hacker News: Front Page
P
Palo Alto Networks Blog
T
ThreatConnect
Apple Machine Learning Research
Apple Machine Learning Research
博客园_首页
T
True Tiger Recordings
P
Privacy & Cybersecurity Law Blog
B
Blog
IT之家
IT之家
Last Week in AI
Last Week in AI
F
Full Disclosure
Hacker News: Ask HN
Hacker News: Ask HN
C
Comments on: Blog
Microsoft Azure Blog
Microsoft Azure Blog
C
Cybersecurity and Infrastructure Security Agency CISA
Microsoft Security Blog
Microsoft Security Blog
博客园 - 【当耐特】
N
News and Events Feed by Topic
NISL@THU
NISL@THU
腾讯CDC
雷峰网
雷峰网
Security Latest
Security Latest
李成银的技术随笔
M
Microsoft Research Blog - Microsoft Research
L
LangChain Blog
L
Lohrmann on Cybersecurity
cs.CL updates on arXiv.org
cs.CL updates on arXiv.org
C
Check Point Blog
Y
Y Combinator Blog
Recent Announcements
Recent Announcements
博客园 - Franky
N
News | PayPal Newsroom
V
V2EX
A
About on SuperTechFans
The Register - Security
The Register - Security
月光博客
月光博客
奇客Solidot–传递最新科技情报
奇客Solidot–传递最新科技情报
Google Online Security Blog
Google Online Security Blog
MyScale Blog
MyScale Blog
Cisco Talos Blog
Cisco Talos Blog
Vercel News
Vercel News
WordPress大学
WordPress大学
C
Cyber Attacks, Cyber Crime and Cyber Security
The Hacker News
The Hacker News
IntelliJ IDEA : IntelliJ IDEA – the Leading IDE for Professional Development in Java and Kotlin | The JetBrains Blog
IntelliJ IDEA : IntelliJ IDEA – the Leading IDE for Professional Development in Java and Kotlin | The JetBrains Blog
爱范儿
爱范儿
A
Arctic Wolf
L
LINUX DO - 最新话题
freeCodeCamp Programming Tutorials: Python, JavaScript, Git & More

博客园 - 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  阅读(315)  评论()    收藏  举报