diff --git a/Apewer/Network/TcpClient.cs b/Apewer/Network/TcpClient.cs
index 1e4031a..2aaacbe 100644
--- a/Apewer/Network/TcpClient.cs
+++ b/Apewer/Network/TcpClient.cs
@@ -1,13 +1,6 @@
-using Apewer;
-using Apewer.Internals;
-using System;
-using System.Collections;
-using System.Collections.Generic;
-using System.IO;
+using System;
using System.Net;
using System.Net.Sockets;
-using System.Text;
-using System.Threading;
namespace Apewer.Network
{
@@ -16,13 +9,19 @@ namespace Apewer.Network
public class TcpClient : IDisposable
{
- Socket _client = null;
+ Socket _socket = null;
/// 套接字实例。
- public Socket Socket { get => _client; }
+ public Socket Socket { get => _socket; }
+
+ /// 本地终结点。
+ public IPEndPoint LocalEndPoint { get; private set; }
+
+ /// 远程终结点。
+ public IPEndPoint RemoteEndPoint { get; private set; }
/// 已连接。
- public bool Connected { get => _client != null && _client.Connected; }
+ public bool Connected { get => _socket != null && _socket.Connected; }
/// 启动客户端,并连接到服务端。
public TcpClient(string ip, int port) : this(IPAddress.Parse(ip), port) { }
@@ -33,34 +32,39 @@ namespace Apewer.Network
/// 启动客户端,并连接到服务端。
public TcpClient(IPEndPoint endpoint)
{
- _client = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
- _client.Connect(endpoint);
- _client.SendTimeout = 5000;
+ _socket = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
+ _socket.Connect(endpoint);
+ _socket.SendTimeout = 5000;
+ LocalEndPoint = _socket.LocalEndPoint as IPEndPoint;
+ RemoteEndPoint = endpoint;
}
/// 关闭连接,释放系统资源。
public void Dispose()
{
- try { _client.Disconnect(false); } catch { }
- try { _client.Close(100); } catch { }
+ try { _socket.Disconnect(false); } catch { }
+ try { _socket.Close(100); } catch { }
#if !NET20
- try { _client.Dispose(); } catch { }
+ try { _socket.Dispose(); } catch { }
#endif
}
+ /// 在线。
+ public bool Online { get => Extensions.Online(_socket); }
+
/// 接收。
///
///
///
///
///
- public byte[] Receive(int maxLength = 1024) => _client.Receive(maxLength);
+ public byte[] Receive(int maxLength = 1024) => _socket.Receive(maxLength);
/// 发送。
///
///
///
- public void Send(byte[] data) => _client.Send(data);
+ public void Send(byte[] data) => _socket.Send(data);
}