C#获取外网IP、本机MAC地址及Ping的实现
原文 获取外网IP, C#获取本机的MAC地址,C#通过编程方式实现Ping
获取外网IP地址
思路是通过WebRequest连接一些网上提供IP查询服务的网站,下载到含有你的IP的网页,然后用正则表达式提取出IP来
class Program
{
static void Main(string[] args)
{
Console.WriteLine(GetExportIP()); Console.ReadKey();
} public static string GetExportIP()
{
//获取外部IP
string strUrl = "http://www.ip.cn/getip.php?action=getip&ip_url=&from=web";
//string strUrl = "http://216.157.85.151/getip.php?action=getip&ip_url=&from=web";
Uri uri = new Uri(strUrl);
WebRequest webreq = WebRequest.Create(uri);
Stream s = webreq.GetResponse().GetResponseStream();
StreamReader sr = new StreamReader(s, Encoding.Default);
string all = sr.ReadToEnd();
all = Regex.Replace(all,@"(\d+)","000$1");
all = Regex.Replace(all, @"0+(\d{3})", "$1");
string reg = @"(\d{3}\.\d{3}\.\d{3}\.\d{3})";
Regex regex = new Regex(reg);
Match match = regex.Match(all);
string ip = match.Groups[].Value;
return Regex.Replace(ip,@"0*(\d+)","$1");
}
}
获取本机MAC
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Management; namespace _17获取MAC地址
{
class Program
{
static void Main(string[] args)
{
ManagementObjectSearcher nisc = new ManagementObjectSearcher("select * from Win32_NetworkAdapterConfiguration");
foreach (ManagementObject nic in nisc.Get())
{
if (Convert.ToBoolean(nic["ipEnabled"]) == true)
{
Console.WriteLine("{0} - {1}", nic["ServiceName"], nic["MACAddress"]);
}
} Console.ReadKey();
}
}
}
Ping
废话少说,具体代码如下:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Net.NetworkInformation; namespace _20通过编程方式实现Ping
{
class Program
{
static void Main(string[] args)
{
Ping ping = new Ping();
PingOptions pingOpt = new PingOptions();
pingOpt.DontFragment = true;//是否设置分段数据
string myInfo = "Hello, world!";
byte[] bufferInfo = Encoding.ASCII.GetBytes(myInfo);
int timeOut = ;
string ipTarget = "192.168.1.102";
PingReply pingReply = ping.Send(ipTarget, timeOut, bufferInfo);
if (pingReply.Status == IPStatus.Success)
{
Console.WriteLine("耗费时间 - {0}\n路由节点数 - {1}\n数据分段 - {2}\n缓冲区大小 - {3}", pingReply.RoundtripTime, //耗费时间
pingReply.Options.Ttl, //路由节点数
pingReply.Options.DontFragment ? "发生分段" : "没有发生分段",//数据分段
pingReply.Buffer.Length//缓冲区大小
);
}
else
{
Console.WriteLine("无法ping通");
} Console.ReadKey();
}
}
}
C# 实现ping的功能
C#获取外网IP、本机MAC地址及Ping的实现的更多相关文章
- Visual Studio 2017 - Windows应用程序打包成exe文件(2)- Advanced Installer 关于Newtonsoft.Json,LINQ to JSON的一个小demo mysql循环插入数据、生成随机数及CONCAT函数 .NET记录-获取外网IP以及判断该IP是属于网通还是电信 Guid的生成和数据修整(去除空格和小写字符)
Visual Studio 2017 - Windows应用程序打包成exe文件(2)- Advanced Installer Advanced Installer :Free for 30 da ...
- c#获取外网IP地址的方法
1.如果你是通过路由上网的,可以通过访问ip138之类的地址来获取外网IP 2.如果是通过PPPOE拨号上网的,可以使用以下代码获取IP //获取宽带连接(PPPOE拨号)的IP地址,timeout超 ...
- Curl之获取外网IP
获取外网IP:curl -s ifconfig.me
- .NET记录-获取外网IP以及判断该IP是属于网通还是电信
在工作时,需要获取服务器公网IP(外网IP),并且判断该IP地址是属于网通还是电信.花时间整理一下,自己实现的代码,以及后续遇到的问题. /// <summary> /// 获取外网IP ...
- JAVA 优先获取外网Ip,再获取内网Ip
1.获取内网Ip private String getLocalhostIp(){ String hostAddress = ""; try { InetAddress addre ...
- linux获取外网ip
引言:目前获取ip的方法中,ifconfig和ip获取函数得到的都是内网ip.有时候需要获取外网ip,目前通用的做法,是向外部服务器发送请求,解析外部服务器响应,从而得到的自己的外网ip.linux下 ...
- java获取外网ip地址
转自:http://blog.163.com/houjunchang_daxue/blog/static/13037938320134543310451/ /** * 获取外网IP.归属地.操作系统 ...
- C# 获取外网IP地址
很多情况下我们需要获取外网的IP地址,一般用自带的方法获取到的都是不准确,往往获取到的是内网的IP地址,所以需要采用外部网站接口来获取. 代码 通过访问第三方接口来获取真实的ip地址 public s ...
- Android 获取外网IP,实测有效
网上有很多获取IP的例子,不过都是获取到的本地ip,还有的是因为走不通了,获取到的ip为空,下面看实测获取到外网IP的代码,注意需要在线程里面执行 /** * 获取外网的IP(要访问Url,要放到后台 ...
随机推荐
- python2 之 pyh2
1.功能 pyh作爲基於python的簡易html生成庫,收到了廣大python愛好者(比如說我,當然其他人沒有調查過)的深切喜愛. 簡潔的行文風格繼承了python一貫的作風,可以讓你用簡單的Pyt ...
- 【剑指offer】不使用除法,构建乘积数组,C++实现
# 题目 # 思路 设C[i] = A[0] * A[1] * - * A[i-1],D[i] = A[i+1] * - * A[n-1],则C[i]按照从上到下的顺序计算,即C[i] = C[i- ...
- Python:版本升级(Mac OS X)
Mac OS X 10.8及以后的版本都预装了Python 2.7,但是在Mac上(Unix-like OS)上修改Python的版本并不如Windows方便.这篇文章的目标是要将Mac自带的Pyth ...
- BZOJ3786 星系探索 【Splay维护dfs序】*
BZOJ3786 星系探索 Description 物理学家小C的研究正遇到某个瓶颈. 他正在研究的是一个星系,这个星系中有n个星球,其中有一个主星球(方便起见我们默认其为1号星球),其余的所有星球均 ...
- NET Core2基于RabbitMQ对Web前端实现推送功能
NET Core2基于RabbitMQ对Web前端实现推送功能 https://www.cnblogs.com/Andre/p/10012329.html 在我们很多的Web应用中会遇到需要从后端将指 ...
- PAT 1006 换个格式输出 C语言
让我们用字母B来表示“百”.字母S表示“十”,用“12...n”来表示个位数字n(<10),换个格式来输出任一个不超过3位的正整数.例如234应该被输出为BBSSS1234,因为它有2个“百”. ...
- windows获取文件夹下所有文件名的方法
方法一:tree命令 TREE——显示磁盘目录结构命令 功能:显示指定驱动器上所有目录路径和这些目录下的所有文件名. 格式:TREE [盘符:][\目录] [/F] [/A] 使用说明:使用/F参数时 ...
- Docker生态概览
百花齐放的容器技术 虽然 docker 把容器技术推向了巅峰,但容器技术却不是从 docker 诞生的.实际上,容器技术连新技术都算不上,因为它的诞生和使用确实有些年头了.下面的一串名称肯能有的你都没 ...
- (转)Android DiskLruCache完全解析,硬盘缓存的最佳方案
摘自:http://blog.csdn.net/guolin_blog/article/details/28863651 转载请注明出处: http://blog.csdn.net/guolin_bl ...
- Spring Boot 入门之持久层篇(三)
原文地址:Spring Boot 入门之持久层篇(三) 博客地址:http://www.extlight.com 一.前言 上一篇<Spring Boot 入门之 Web 篇(二)>介绍了 ...