From 650d29bb12036b1d147651c7bca963f0b2434260 Mon Sep 17 00:00:00 2001 From: Elivo Date: Thu, 31 Jul 2025 16:44:41 +0800 Subject: [PATCH] =?UTF-8?q?Socket=20=E6=89=A9=E5=B1=95=E6=96=B9=E6=B3=95?= =?UTF-8?q?=E7=A7=BB=E8=87=B3=20NetworkUtility?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Apewer/Network/Extensions.cs | 40 -------------------------------- Apewer/Network/TcpClient.cs | 2 +- Apewer/NetworkUtility.cs | 44 ++++++++++++++++++++++++++++++++++++ 3 files changed, 45 insertions(+), 41 deletions(-) diff --git a/Apewer/Network/Extensions.cs b/Apewer/Network/Extensions.cs index 61a3c04..2d8d0f1 100644 --- a/Apewer/Network/Extensions.cs +++ b/Apewer/Network/Extensions.cs @@ -155,46 +155,6 @@ namespace Apewer.Network return json; } - /// 检查 Socket 在线状态。 - /// - /// - /// - public static bool Online(this Socket socket) - { - if (socket == null) return false; - - var pending = socket.Poll(1000, System.Net.Sockets.SelectMode.SelectRead); - var available = socket.Available; - var offline = pending && available == 0; - return !offline; - } - - /// 从套接字接收数据。 - /// - /// - /// - /// - /// - /// - public static byte[] Receive(this Socket socket, int maxLength = 1024) - { - if (socket == null) throw new ArgumentNullException(nameof(socket)); - if (maxLength < 0 || maxLength > 65535) throw new ArgumentOutOfRangeException(nameof(maxLength)); - - var buffer = new byte[maxLength]; - var received = socket.Receive(buffer, 0, maxLength, SocketFlags.None); - if (received < maxLength) - { - var newBuffer = new byte[received]; - Array.Copy(buffer, newBuffer, received); - return newBuffer; - } - else - { - return buffer; - } - } - } } diff --git a/Apewer/Network/TcpClient.cs b/Apewer/Network/TcpClient.cs index 74e0bca..db7eac4 100644 --- a/Apewer/Network/TcpClient.cs +++ b/Apewer/Network/TcpClient.cs @@ -15,7 +15,7 @@ namespace Apewer.Network public Socket Socket { get => _socket; } /// 在线。 - public bool Online { get => Extensions.Online(_socket); } + public bool Online { get => NetworkUtility.Online(_socket); } /// 本地终结点。 public IPEndPoint LocalEndPoint { get; private set; } diff --git a/Apewer/NetworkUtility.cs b/Apewer/NetworkUtility.cs index 8478440..717070f 100644 --- a/Apewer/NetworkUtility.cs +++ b/Apewer/NetworkUtility.cs @@ -591,6 +591,50 @@ namespace Apewer #endregion + #region Socket + + /// 检查 Socket 在线状态。 + /// + /// + /// + public static bool Online(this Socket socket) + { + if (socket == null) return false; + + var pending = socket.Poll(1000, System.Net.Sockets.SelectMode.SelectRead); + var available = socket.Available; + var offline = pending && available == 0; + return !offline; + } + + /// 从套接字接收数据。 + /// + /// + /// + /// + /// + /// + public static byte[] Receive(this Socket socket, int maxLength = 1024) + { + if (socket == null) throw new ArgumentNullException(nameof(socket)); + if (maxLength < 0 || maxLength > 65535) throw new ArgumentOutOfRangeException(nameof(maxLength)); + + var buffer = new byte[maxLength]; + var received = socket.Receive(buffer, 0, maxLength, SocketFlags.None); + if (received < maxLength) + { + var newBuffer = new byte[received]; + Array.Copy(buffer, newBuffer, received); + return newBuffer; + } + else + { + return buffer; + } + } + + #endregion + } }