【C#底层库】网络辅助类(测试网络连通) 系列文章C#底层库–万能进制转换器自定义有序字符支持任意进制本文链接https://blog.csdn.net/youcheng_ge/article/details/130444724C#底层库–StringExtension字符串扩展类本文链接https://blog.csdn.net/youcheng_ge/article/details/129520428C#底层库–MySQL数据库访问操作辅助类推荐阅读本文链接https://blog.csdn.net/youcheng_ge/article/details/126886379C#底层库–SQLBuilder构建类自研ORM本文链接https://blog.csdn.net/youcheng_ge/article/details/129179216C#底层库–XML配置参数读写辅助类推荐阅读本文链接https://blog.csdn.net/youcheng_ge/article/details/129175304C#底层库–数据库类型与程序类型转换器本文链接https://blog.csdn.net/youcheng_ge/article/details/128817610C#底层库–文件上传辅助类本文链接https://blog.csdn.net/youcheng_ge/article/details/128817487C#底层库–RegexHelper正则表达式辅助类本文链接https://blog.csdn.net/youcheng_ge/article/details/109745286C#底层库–程序日志记录类本文链接https://blog.csdn.net/youcheng_ge/article/details/124187709C#底层库–排序算法帮助类本文链接https://blog.csdn.net/youcheng_ge/article/details/124495730C#底层库–SQLite的使用轻量、单击数据库本文链接https://blog.csdn.net/youcheng_ge/article/details/123666958C#底层库–获取文件版本和MD5值本文链接https://blog.csdn.net/youcheng_ge/article/details/112513871C#底层库–文件操作类文件重命名、目录移动、字节流转换本文链接https://blog.csdn.net/youcheng_ge/article/details/126887161C#底层库–Excel数据读取类可读加密表格本文链接https://blog.csdn.net/youcheng_ge/article/details/126887445C#底层库–随机数生成器本文链接https://blog.csdn.net/youcheng_ge/article/details/126888812C#底层库–CSV和DataTable相互转换本文链接https://blog.csdn.net/youcheng_ge/article/details/128804367C#底层库–JSON使用教程_详细序列化、反序列化、转DataTable本文链接https://blog.csdn.net/youcheng_ge/article/details/128805705C#底层库–cookie使用教程本文链接https://blog.csdn.net/youcheng_ge/article/details/128816347C#底层库–Session操作辅助类本文链接https://blog.csdn.net/youcheng_ge/article/details/128817096C#底层库–Image图片操作类本文链接https://blog.csdn.net/youcheng_ge/article/details/128805298C#底层库–图片增加水印辅助类本文链接https://blog.csdn.net/youcheng_ge/article/details/128817184C#底层库–数据实体类本文链接https://blog.csdn.net/youcheng_ge/article/details/128816638C#底层库–网络通信帮助类HTTP本文链接https://blog.csdn.net/youcheng_ge/article/details/126886697文章目录系列文章前言一、底层库作用二、底层库源码三、使用方法四、项目样例五、资源链接前言【C#底层库】​拒绝重复造轮子本专栏致力于构建一套企业级通用组件库将项目中高频使用的功能如数据库访问、加密解密、HTTP通信、Office操作等进行深度封装与单元测试形成稳定可靠的“开发底座”。您无需关心复杂的底层实现只需一行调用代码即可解决繁琐的业务支撑问题。专栏持续集成与优化涵盖MySQL、日志、Session、文件处理等核心模块。关注我让复杂的功能实现变得简单高效有任何问题欢迎私信交流一、底层库作用NetWorkHelper.cs 网络辅助类可用于获取一个可用的端口号、获取本机的IP地址、获取本机的MAC地址、测试是否能连接到服务器、测试是否能ping通服务器。二、底层库源码创建类NetWorkHelper.cs复制以下代码。usingSystem.Net;usingSystem.Net.NetworkInformation;usingSystem.Net.Sockets;usingSystem.Text;usingWinFormsApp1;publicclassNetWorkHelper{/// summary/// ‌GetAvaliablePort‌函数用于获取一个可用的端口号/// LocalEndpoint本机回送地址主要用于网络软件测试以及本地机进程间通信。/// /summary/// returns/returnspublicstaticintGetAvaliablePort(){TcpListenertcpListenernewTcpListener(IPAddress.Loopback,0);tcpListener.Start();intport((IPEndPoint)tcpListener.LocalEndpoint).Port;tcpListener.Stop();returnport;}/// summary/// GetLocalIpv4函数用于获取本机的IP地址/// /summary/// param namebaseip/param/// returns/returnspublicstaticstringGetLocalIpv4(stringbaseip){IPAddress[]hostAddressesDns.GetHostAddresses(Dns.GetHostName());if(hostAddresses.Select((IPAddressx)x.ToString()).Contains(baseip)){returnbaseip;}returnDns.GetHostAddresses(Dns.GetHostName()).FirstOrDefault((IPAddressx)x.AddressFamilyAddressFamily.InterNetwork)?.ToString();}/// summary/// GetMacAddress函数用于获取本机的MAC地址/// /summary/// returns/returnspublicstaticstringGetMacAddress(){returnNetworkInterface.GetAllNetworkInterfaces().First((NetworkInterfacex)x.OperationalStatusOperationalStatus.Up).GetPhysicalAddress().ToString();}/// summary/// TestConnectServer函数用于测试是否能连接到服务器/// /summary/// param nameurlstring/param/// param nametimeout/param/// param namethrowexception/param/// returns/returns/// exception crefException/exceptionpublicstaticboolTestConnectServer(stringurlstring,inttimeout3000,boolthrowexceptiontrue){if(!urlstring.IsNullOrEmpty()){UriurinewUri(urlstring);if(!TestConnectServer(uri.Host,uri.Port,timeout)){if(throwexception){thrownewException(无法连接服务器网络故障请检查后重试\n服务地址{0}\n本机地址{1}.Args(urlstring,GetLocalIpv4()));}returnfalse;}returntrue;}returntrue;}/// summary/// TestConnectServer函数用于测试是否能连接到服务器/// /summary/// param namehost/param/// param nameport/param/// param nametimeout/param/// returns/returnspublicstaticboolTestConnectServer(stringhost,intport,inttimeout){Socketsocketnull;try{socketnewSocket(AddressFamily.InterNetwork,SocketType.Stream,ProtocolType.Tcp);socket.SetSocketOption(SocketOptionLevel.Socket,SocketOptionName.DontLinger,optionValue:false);IAsyncResultasyncResultsocket.BeginConnect(host,port,null,null);asyncResult.AsyncWaitHandle.WaitOne(timeout,exitContext:true);returnsocket.Connected;}catch{returnfalse;}finally{socket?.Close();}}/// summary/// TestPing函数用于测试是否能ping通服务器/// /summary/// param namehost/param/// param nametimeout/param/// returns/returnspublicstaticboolTestPing(stringhost,inttimeout300){PingOptionsoptionsnewPingOptions{DontFragmenttrue};PingReplypingReplynewPing().Send(host,timeout,Encoding.ASCII.GetBytes(a),options);returnpingReply!nullpingReply.StatusIPStatus.Success;}}三、使用方法我放在了窗体页面新增一个按钮点击按钮时触发。vara1NetWorkHelper.GetAvaliablePort();vara2NetWorkHelper.GetLocalIpv4();vara3NetWorkHelper.GetMacAddress();vara4NetWorkHelper.TestConnectServer(http://127.0.0.1);vara5NetWorkHelper.TestPing(172.24.68.106);运行结果a1 56103a2 “172.24.68.106”a3 “00155D9A0AD7”a4 truea5 true四、项目样例无五、资源链接无