Skip to content

Commit c06fc6b

Browse files
committed
[优化] 网络工具类的参数检查
1 parent ba0675b commit c06fc6b

1 file changed

Lines changed: 30 additions & 0 deletions

File tree

GameFrameX.Utility/NetHelper.cs

Lines changed: 30 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -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>
1024
public 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

Comments
 (0)