c# description_一个基于C#编写的基础网络信息检测工具

0c7624dfee7426097e8d3cfcb9f02c5b.gif

一个基于C#编写的基础网络信息检测工具
这个程序设计了五个模块,如下:
1.获取本地主机的主机名、ipv4地址、ipv6地址
2.获取远程主机的ip地址、延迟等
3.获取网络适配器信息(网卡信息),包含名称、mac地址等
4.获取网络流量信息,包含ipv4的统计信息:所在域、接收数据包、发送数据包、丢弃数据包等
5.调用cmd执行网络状态重置命令:netsh winsock reset
获取本地主机信息代码如下:
this.richTextBox1.Clear();//获取主机名,回环string localHostName = Dns.GetHostName();IPAddress loopbackip = IPAddress.Loopback;richTextBox1.AppendText(" 主机名:" localHostName "\n");richTextBox1.AppendText(" 回环地址:" loopbackip);//获取本机ipv4IPHostEntry localhost = Dns.GetHostEntry(localHostName);IPAddress[] iPAddressesList = Dns.GetHostAddresses(localHostName);//输出ipv6foreach (IPAddress ipa in iPAddressesList){   if (ipa.AddressFamily == System.Net.Sockets.AddressFamily.InterNetworkV6)   {      richTextBox1.AppendText("\n IPv6:" ipa);   }}//输出ipv4foreach (IPAddress ipa in iPAddressesList){   if (ipa.AddressFamily == System.Net.Sockets.AddressFamily.InterNetwork)   {      richTextBox1.AppendText("\n IPv4地址:" ipa);   }}richTextBox1.AppendText("\n 可分配端口最小值:" IPEndPoint.MinPort);richTextBox1.AppendText("\n 可分配端口最大值:" IPEndPoint.MaxPort "\n");GetNetworkFlow();

获取远程主机信息代码如下:

this.richTextBox2.Clear();IPHostEntry remotaHost = Dns.GetHostEntry(this.textBox1.Text);IPAddress[] remotaIP = remotaHost.AddressList;foreach (IPAddress ipa in remotaIP){   if(ipa.AddressFamily == System.Net.Sockets.AddressFamily.InterNetwork)   {      richTextBox2.AppendText(" 目标主机地址:" ipa "\n");   }}string hostAddress = this.textBox1.Text.Trim();Ping pingSender = new Ping();PingOptions options = new PingOptions();options.DontFragment = true;string testData = "Test Data";byte[] buffer = Encoding.ASCII.GetBytes(testData);int timeout = 120;//调用同步的Send方法发送数据,将结果保存至PingReply实例PingReply reply = pingSender.Send(hostAddress, timeout, buffer, options);if (reply.Status == IPStatus.Success){   richTextBox2.AppendText(" 往返时间:" reply.RoundtripTime "\n");   richTextBox2.AppendText(" 生存时间:" reply.Options.Ttl "\n");   richTextBox2.AppendText(" 是否控制数据包的分段:" reply.Options.DontFragment "\n");   richTextBox2.AppendText(" 缓冲区大小:" reply.Buffer.Length "\n");}

获取网络适配器信息代码如下:

NetworkInterface[] AdapterInfoBox = NetworkInterface.GetAllNetworkInterfaces();for (int i = 0; i < AdapterInfoBox.Length; i ) {   richTextBox3.AppendText("   ------------------------------------第" (i 1) "个网络适配器信息------------------------------------\n");   richTextBox3.AppendText("   描述信息:" AdapterInfoBox.Description "\n");   richTextBox3.AppendText("   名称:" AdapterInfoBox.Name "\n");   richTextBox3.AppendText("   类型:" AdapterInfoBox.NetworkInterfaceType "\n");   richTextBox3.AppendText("   速度:" AdapterInfoBox.Speed / 1000 / 1000 "\n");   richTextBox3.AppendText("   MAC地址:" BitConverter.ToString(AdapterInfoBox.GetPhysicalAddress().GetAddressBytes()) "\n");}

获取网络流量代码如下:

//获取包含本机的网络连接和通信统计数据的信息的对象IPGlobalProperties NetworkInfo = IPGlobalProperties.GetIPGlobalProperties();//获取本机IPv4统计数据IPGlobalStatistics NetworkFlow = NetworkInfo.GetIPv4GlobalStatistics();richTextBox1.AppendText("\n 网络流量统计:\n");richTextBox1.AppendText(" 本机所在域  ······  " NetworkInfo.DomainName "\n");richTextBox1.AppendText(" 接收数据包  ······  " NetworkFlow.ReceivedPackets "\n");richTextBox1.AppendText(" 传送数据包  ······  " NetworkFlow.ReceivedPacketsDelivered "\n");richTextBox1.AppendText(" 转发数据包  ······  " NetworkFlow.ReceivedPacketsForwarded "\n");richTextBox1.AppendText(" 丢弃数据包  ······  " NetworkFlow.ReceivedPacketsDiscarded "\n");

调用cmd执行命令的代码如下:

string reset = "netsh winsock reset";string restart = "shutdown -r -t 0";//创建实例Process p = new Process();//设置要启动的应用程序p.StartInfo.FileName = "cmd.exe";//是否使用操作系统shell启动p.StartInfo.UseShellExecute = false;// 接受来自调用程序的输入信息p.StartInfo.RedirectStandardInput = true;//输出信息p.StartInfo.RedirectStandardOutput = true;// 输出错误p.StartInfo.RedirectStandardError = true;//不显示程序窗口p.StartInfo.CreateNoWindow = true;//启动程序p.Start();//向cmd窗口发送输入信息p.StandardInput.WriteLine(reset "&" restart "&exit");p.StandardInput.AutoFlush = true;this.Close();

fa056519a65c88dd1e9eacb5518d5a7e.png

推荐文章++++

7f9a6f5556e68af0d9e1eb4bdd5df06b.png

*Taipan - C#开源跨平台web漏洞扫描器

*进阶!使用C#+Empire实现最小体积免杀后门

*老菜鸟致青春,程序员应该选择java 还是 c#?

ca1eb9df60de13abb3659d14479d654d.png

f46a9aa19f252bae67fab41bb5a0f185.gif

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值