@@ -6,7 +6,21 @@ namespace GameFrameX.Utility;
66
77/// <summary>
88/// 网络帮助类
9+ /// 提供网络相关的实用工具方法,包括IP地址验证、端口可用性检查、本地IP获取等功能
910/// </summary>
11+ /// <remarks>
12+ /// 核心功能:
13+ /// - IP地址格式验证和解析
14+ /// - 端口可用性检测和管理
15+ /// - 本地网络接口信息获取
16+ /// - 网络连接状态查询
17+ ///
18+ /// 适用场景:
19+ /// - 网络服务器端口分配
20+ /// - 客户端连接配置验证
21+ /// - 网络诊断和监控
22+ /// - 分布式系统节点发现
23+ /// </remarks>
1024public static class NetHelper
1125{
1226 /// <summary>
@@ -15,8 +29,11 @@ public static class NetHelper
1529 /// <param name="ipAddress">IP地址字符串</param>
1630 /// <param name="value">解析成功的IPAddress对象</param>
1731 /// <returns>如果IP地址合法,返回true;否则返回false</returns>
32+ /// <exception cref="ArgumentNullException">当ipAddress为null时抛出此异常</exception>
1833 public static bool IsValidIpAddress ( string ipAddress , out IPAddress value )
1934 {
35+ ArgumentNullException . ThrowIfNull ( ipAddress , nameof ( ipAddress ) ) ;
36+
2037 return IPAddress . TryParse ( ipAddress , out value ) ;
2138 }
2239
@@ -26,8 +43,17 @@ public static bool IsValidIpAddress(string ipAddress, out IPAddress value)
2643 /// <param name="startPort">起始端口号,默认为667</param>
2744 /// <param name="maxPort">结束端口号,默认为65535</param>
2845 /// <returns>第一个可用的端口号,如果没有可用端口号则返回-1</returns>
46+ /// <exception cref="ArgumentOutOfRangeException">当startPort小于1或大于65535时抛出此异常</exception>
47+ /// <exception cref="ArgumentOutOfRangeException">当maxPort小于1或大于65535时抛出此异常</exception>
48+ /// <exception cref="ArgumentException">当startPort大于等于maxPort时抛出此异常</exception>
2949 public static int GetFirstAvailablePort ( int startPort = 667 , int maxPort = 65535 )
3050 {
51+ ArgumentOutOfRangeException . ThrowIfLessThan ( startPort , 1 , nameof ( startPort ) ) ;
52+ ArgumentOutOfRangeException . ThrowIfGreaterThan ( startPort , 65535 , nameof ( startPort ) ) ;
53+ ArgumentOutOfRangeException . ThrowIfLessThan ( maxPort , 1 , nameof ( maxPort ) ) ;
54+ ArgumentOutOfRangeException . ThrowIfGreaterThan ( maxPort , 65535 , nameof ( maxPort ) ) ;
55+ ArgumentOutOfRangeException . ThrowIfGreaterThanOrEqual ( startPort , maxPort , nameof ( startPort ) ) ;
56+
3157 for ( var i = startPort ; i < maxPort ; i ++ )
3258 {
3359 if ( PortIsAvailable ( i ) )
@@ -81,8 +107,12 @@ public static List<int> PortIsUsed()
81107 /// </summary>
82108 /// <param name="port">要检查的端口号</param>
83109 /// <returns>如果端口未被使用,返回true;否则返回false</returns>
110+ /// <exception cref="ArgumentOutOfRangeException">当port小于1或大于65535时抛出此异常</exception>
84111 public static bool PortIsAvailable ( int port )
85112 {
113+ ArgumentOutOfRangeException . ThrowIfLessThan ( port , 1 , nameof ( port ) ) ;
114+ ArgumentOutOfRangeException . ThrowIfGreaterThan ( port , 65535 , nameof ( port ) ) ;
115+
86116 var isAvailable = true ;
87117
88118 var portUsed = PortIsUsed ( ) ;
0 commit comments