按照老规矩,也是朋友的建议,老周今天在吹牛之前,先讲一个小故事。

有朋友问我,老周,你现在还发短信吗,你每个月用多少电话费?唉,实话说,现在真的发短信不多了,套餐送的130条短信,每月都发不了一条。至于电话费嘛,基本上是交月租,通话费用可能平均不到1块钱,多的可能就几块钱。老周的单次通话时间一般不会长,长达半小时的通话也是偶然发生,多数情况下就说几句话而已,别说废话,长话短说,说完挂机。

有人会问,那如果要多聊一会儿呢,那就开聊天工具,聊语音。反正用的是光纤包年,多说几句废话也不花钱。

该省的钱就省,老周向来有钱也不随便花,该用则用,把钱拿出来去买些可以增值的收藏品,或者搞些风险不太大的投资也不错。很多时候,老周宁可买个工艺品放在书桌上,也不会去买电影票。想想买张电影票,看一两个小时就完了,什么都没留下,再说了,近些年来烂片太多了,现在的导演编剧演员们,艺术修养太低,尽拍些挑战智商底线的片子,看这种电影根本不值,这些鬼片顶多值1分钱。我还不如买些有层次有品位的东西摆在家里,我还可以天天看。

===============================================================

好,故事讲完了,咱们说正经话,今天说说在UWP应用中怎么获取本机的IP地址。我不记得以前有没有写过类似的文章,也不知道别人有没有写过,如果你懂了,就不用看下文了,你就当老周扯了废话就行了。

老周写博客向来很随意,绝对不严肃,不是老周对待知识不认真,而是老周性情如此,从来不喜欢过多的约束,因此,与其说是博文,不如说是随笔,就是随意下笔,只要不伤大雅就好。

在Windows.Networking.Connectivity命名空间下,有一个类叫NetworkInformation,它有个静态的公共方法叫GetHostNames,调用它就可以获取本机的机器名了。

有朋友会说了,这真TMD太简单了,别高兴得太早,你用了就知道了。方法调用是简单,然而它返回的是N个HostName实例,这可就有点XX了,多个HostName,我到底要选用哪个?

先看看,HostName类有个Type属性,它是一个HostNameType枚举值,如果是计算机名(比如“MyPC”),类型就为DomainName,如果是蓝牙网卡上的地址,则为Bluetooth,如果是IP地址,有两个值——Ipv4和Ipv6。

在多数情况下,都会用IP地址,所以你会想到,当调用 NetworkInformation.GetHostNames() 方法得到HostName列表后,可以用其Type属性来筛选出表示IP地址的Hostname实例。现在用得多的是v4的IP地址,如192.168.0.20。

好,第一个问题解决了,然而新问题来了,我虽然筛选出了表示IP的主机名,但是,我想用的是通过Wi-Fi连接的IP地址,那怎么办呢?

没事,咱们接着分析。当你确认了某个HostName对象是IP地址表示时,可以访问它的IPInformation属性,这时你会得到一个IPInformation实例。

随后,你会发现,IPInfomation类有个NetworkAdapter属性,访问它,获得一个NetworkAdapter实例。这个NetworkAdapter实例表示的是这个主机名所代表连接的网络适配器的信息,你不妨理解为就是连接了网络的那个网卡(当然包括无线网卡)。

接着,你又发现,NetworkAdapter类有个属性叫IanaInterfaceType,它是一个int类型。

现在,你离真相只有一步之遥了。这个整数值你可别小看它,它可以用来标识网络接口类型。这些值在MSDN上都有,为了大家省事,我就抄了一部分下来,请看:

6 —— 以太网;

23 —— PPP 网络接口(专用名词,可以网上搜,了解一下就行了,不用死记);

24 —— 软件回环接口;

37 —— ATM 网络接口;

71 —— 无线网络接口(这个是重点);

1 —— 其他接口。

要判断是否为无线网络接口,你就看它是不是71就好了。

至此,相信大家心中的疑问都消散得差不多了,不知道老周这样讲解,你懂否?

不扯了,可以上代码了。

            // 获取本地主机名称列表var hosts = NetworkInformation.GetHostNames();// 筛选无线或以太网var host = hosts.FirstOrDefault(h =>{bool isIpaddr = (h.Type == Windows.Networking.HostNameType.Ipv4) || (h.Type == Windows.Networking.HostNameType.Ipv6);// 如果不是IP地址表示的名称,则忽略if (isIpaddr == false){return false;}IPInformation ipinfo = h.IPInformation;// 71表示无线,6表示以太网if (ipinfo.NetworkAdapter.IanaInterfaceType == 71 || ipinfo.NetworkAdapter.IanaInterfaceType == 6){return true;}return false;});if (host != null){tb.Text = host.DisplayName; //显示IP}

运行的结果如下图所示。

好了,这次的内容就说到这里了,改天,和大家聊聊跟 Socket 有关的话题。

示例源代码下载地址

转载于:https://www.cnblogs.com/tcjiaan/p/5222654.html

【Win 10 应用开发】获取本机的IP地址相关推荐

  1. python项目实战:获取本机所有IP地址的方法

    2019独角兽企业重金招聘Python工程师标准>>> 前言 今天为大家介绍一个利用python获取本机所有IP地址的具体代码,具有一定的参考价值,希望能够帮助到大家,代码如下: 导 ...

  2. C++获取本机的ip地址程序

    C++获取本机的ip地址程序 #include <WinSock2.h> #pragma comment(lib,"ws2_32") //链接到ws2_32动态链接库c ...

  3. 使用Linux curl命令获取本机公网IP地址

    使用Linux curl命令获取本机公共IP地址 在本教程中,我们将学习如何使用Linux curl命令查找计算机的公共IP地址. 通常,如果我们想要找到我们使用的公共IP地址,我们会去谷歌并搜索&q ...

  4. VB6获取本机所有IP地址公用函数

    因为正好有用到,整了个公用函数,一次获取本机全部IP地址: Option ExplicitPrivate Declare Function WSAstartup Lib "WSOCK32.D ...

  5. Spring boot 获取本机的IP地址mac地址以及电脑名称!

    Spring boot 获取本机的IP地址mac地址以及电脑名称! package com.example.demo;import java.net.InetAddress;import java.n ...

  6. 如何在Node.js中获取本机本地IP地址

    最近在做Cloud related的项目时,遇到一个问题,就是如何在Node.js中获取本机的IP地址.Node.js提供的API中,只能获取本机的hostname. os = require('os ...

  7. C#如何获取本机网络ip地址

    C#如何获取本机网络ip 有几种方法获取本机局域网地址和网络地址. 1.  获取本机局域网地址: 使用IPHostEntry static string GetLocalIp()         { ...

  8. sql server 获取本机的ip地址

    --sql server 获取本机的ip地址 -- 其实就是使用xp_cmdshell 来获取信息,然后对信息进行筛选. --开启xp_cmdshell exec sp_configure 'show ...

  9. 获取本机所有IP地址的方法

    获取本机所有IP地址的方法    java.net包中的IP地址类InetAddress提供了可以获取本机IP地址的方法getLocalHost(),但是通过该方法只能获得第一个网络设备的IP地址.但 ...

最新文章

  1. CF449B Jzzhu and Cities 迪杰斯特拉最短路算法
  2. Linux 备份及恢复 Linux 文件权限
  3. C++学习成长的四个层次
  4. 谈谈Ext JS的组件——布局的使用方法续二
  5. FFMPEG学习(一)---【命令行】采集视频和音频
  6. spark报错: Yarn application has already ended! killed or unable to launch application master
  7. Google Test(Primer)(三)——断言
  8. 数据库工作笔记007---mysql查询数据库中共有多少表
  9. 计算机系统-理论-CPU操作/处理数据的方式/寻址方式/局部性原理/位运算/进制转换
  10. Lua 脚本汇编-入门到精通
  11. python3读取网页内容_python3获取一个网页特定内容
  12. 超燃!高效 MacBook 工作环境配置,超实用
  13. 数据中心断路器整定值计算(二)
  14. html制作钟表盘,CSS3简易表盘时钟
  15. PDF文件压缩有什么方法?如何操作?
  16. 【HTML5+CSS】怎样去美化你的页面
  17. 【网络编程】基于TCP/IP协议的C/S模型
  18. matlab使用杂谈4-偏微分方程求解之pdede函数使用
  19. 2021高考语文成绩查询,重磅!2021年上海高考分数线权威预测出炉,看看你能上什么大学...
  20. Unity实现众多平台一键社会化分享(ShareSDK)

热门文章

  1. three.js写的游戏
  2. 深入理解java虚拟机---读书笔记
  3. NET 应用架构指导 V2 学习笔记(十九) 表现层组件设计指导
  4. 2008秋-计算机软件基础- 实验一 参考源程序
  5. springboot启动后controller访问404
  6. python 基础笔记十一 - random模块
  7. 中国云计算市场加速发展 今年有望突破3000亿
  8. Qt实现FlatUI样式(开源)
  9. 软件过程与项目管理(作业一)
  10. Windows Phone开发(37):动画之ColorAnimation