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);
}
}