本文实例讲述了c#实现获取本地内网(局域网)和外网(公网)IP地址的方法。分享给大家供大家参考,具体如下:
1,获取本机的IP地址集合:
///& lt; summary>///获取本机所有ip地址///& lt;/summary>///& lt;参数name=皀etType”在“互联网络”:ipv4地址,“InterNetworkV6”: ipv6地址& lt;/param>///& lt; returns> ip地址集合& lt;/returns> 公共静态ListnetType GetLocalIpAddress(字符串) { 字符串主机名=Dns.GetHostName ();//获取主机名称 IPAddress[]地址=Dns.GetHostAddresses(主机名);//解析主机IP地址 List IPList=new List (); 如果(netType==string.Empty) { for (int i=0;我& lt;addresses.Length;我+ +) { [我].ToString IPList.Add(地址()); } } 其他的 {//AddressFamily.InterNetwork表示此IP为IPv4,//AddressFamily.InterNetworkV6表示此地址为IPv6类型 for (int i=0;我& lt;addresses.Length;我+ +) { 如果地址[我].AddressFamily.ToString ()==netType) { [我].ToString IPList.Add(地址()); } } } 返回IPList; } List ips=GetLocalIpAddress(" ");//获取本地所有ip List ipv4_ips=GetLocalIpAddress(“目的”);//获取ipv4类型的ip List ipv6_ips=GetLocalIpAddress (InterNetworkV6 ");//获取ipv6类型的ip >之前 2,获取本机局域网内IP地址:
如果本机在局域网内,直接调用上面的方法即可,以ipv4为例:
Listipv4_ips=GetLocalIpAddress(“目的”); >之前 如果本机只有一个网卡,且没有安装虚拟网卡,那么ipv4_ips里应该只有一条数据,即局域网内地址;
3,获取本机的公网IP地址:
1),如果本机是拨号上网的或具有独立公网IP的情况下,使用上面的方法即可,以ipv4为例:
Listipv4_ips=GetLocalIpAddress(“目的”); >之前 如果本机只有一个网卡,且没有安装虚拟网卡,那么ipv4_ips里应该只有一条数据,即公网IP地址;
2),如果是路由上网的,想获取网关的外网IP,只能通过访问一些公网的地址来获取外网IP了;
步骤:先获取到含有本机外网ip的页面信息,再通过正则获取到ip信息;
///& lt; summary>///获取页面html///& lt;/summary>///& lt;参数name=" url "祝辞请求的地址& lt;/param>///& lt;参数name=氨嗦搿弊4潜嗦敕绞? lt;/param>///& lt; returns> & lt;/returns> HttpGetPageHtml公共静态字符串(字符串url字符串编码) { 字符串pageHtml=string.Empty; 试一试 { 使用(WebClient MyWebClient=new WebClient ()) { 编码编码=Encoding.GetEncoding(编码); MyWebClient.Headers。Add(“用户代理”、“Mozilla/5.0 (Windows NT 10.0;WOW64) AppleWebKit/537.36 (KHTML,像壁虎)Chrome/68.0.3440.84 Safari 537.36”); MyWebClient。凭证=CredentialCache.DefaultCredentials;//获取或设置用于向互联网资源的请求进行身份验证的网络凭据 Byte [] pageData=https://www.yisu.com/zixun/MyWebClient.DownloadData (url);//从指定网站下载数据 pageHtml=encode.GetString (pageData); } } 捕获(异常e) { } 返回pageHtml; }>///<总结///从html中通过正则找到ip信息(只支持ipv4地址)>///总结///之前测试(测试时间:2019年6月18日17:37:46):
var t0_html=HttpGetPageHtml (“https://www.ip.cn”、“utf - 8”); var t1_html=HttpGetPageHtml (“http://www.ip138.com/ips138.asp”、“gbk”); var t2_html=HttpGetPageHtml (“http://www.net.cn/static/customercare/yourip.asp”、“gbk”); var t0_ip=GetIPFromHtml (t0_html);//111.198.29.123 var t1_ip=GetIPFromHtml (t1_html);//111.198.29.123 var t2_ip=GetIPFromHtml (t2_html);//111.198.29.123 >之前