using HPSocketCS; using System.Runtime.InteropServices; namespace iWareCc.Util { /// /// Socket帮助抽象类,该类实现Socket的连接,关闭基本功能 /// public abstract class SocketClient { /// /// socket连接客户端 /// public TcpClient Client; /// /// 需要连接的服务器IP /// private string Ip; /// /// 需要连接的服务器端口 /// private ushort Port; /// /// 记录客户端是否连上 /// public bool IsClientOn = false; public SocketClient(TcpClient client, string ip, string port) { this.Client = client; this.Ip = ip; this.Port = ushort.Parse(port); //绑定client事件 Client.OnConnect += new TcpClientEvent.OnConnectEventHandler(OnConnect); Client.OnSend += new TcpClientEvent.OnSendEventHandler(OnSend); Client.OnReceive += new TcpClientEvent.OnReceiveEventHandler(OnReceive); Client.OnClose += new TcpClientEvent.OnCloseEventHandler(OnClose); } /// /// 连接socket /// /// 是否连接成功 public bool Connect() { return Client.Connetion(Ip, Port, false); } /// /// 断开socket连接 /// /// 是否断开成功 public bool Disconnect() { return Client.Stop(); } /// /// 发送 /// /// /// public virtual bool Send(byte[] bytes) { return Client.Send(bytes, bytes.Length); } /// /// 关闭socket时执行的代码 /// /// /// /// /// protected abstract HandleResult OnClose(TcpClient sender, SocketOperation enOperation, int errorCode); /// /// 接收到报文时执行的代码 /// /// /// 接收到的字符串 /// protected abstract HandleResult OnReceive(TcpClient sender, byte[] bytes); /// /// 发送报文时执行的代码 /// /// /// /// protected abstract HandleResult OnSend(TcpClient sender, byte[] bytes); /// /// 连接客户端时执行的代码 /// /// /// protected abstract HandleResult OnConnect(TcpClient sender); } }