/// <summary> /// 发送数据 /// </summary> /// <param name="message">消息字符串</param> public void Send(string message, IEccReceiptListener listener) { if (Socket == null || message == string.Empty) { return; } //编码 byte[] data = encoding.GetBytes(message); try { //异步发送数据 Socket.BeginSend(data, 0, data.Length, SocketFlags.None, asyncResult => { //完成发送消息 int length = Socket.EndSend(asyncResult); //消息发送成功 if (listener != null) { EccReceiptListener.Ecc_Sent(listener, message, true); } }, null); } catch (SocketException ex) { //消息发送失败 if (listener != null) { EccReceiptListener.Ecc_Sent(listener, message, false); } //异常回调 EccExceptionListener.Ecc_BreakOff(ex); } }
public void Connect(IPEndPoint ipep, IEccReceiptListener listener) { //创建套接字 Socket = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp); //开始对一个远程主机建立异步的连接请求 Socket.BeginConnect(ipep, asyncResult => { try { //结束挂起的异步连接请求 Socket.EndConnect(asyncResult); //连接完成回调 if (listener != null) { EccReceiptListener.Ecc_Connection(listener, true); } //接受消息 Recive(); } catch (SocketException ex) { //与服务器连接失败 if (listener != null) { EccReceiptListener.Ecc_Connection(listener, false); } //异常回调 EccExceptionListener.Ecc_ConnectionFail(ex); } }, null); }
/// <summary> /// 销毁对象并执行回调 /// </summary> /// <param name="listener"></param> public void Close(IEccReceiptListener listener) { Socket.BeginDisconnect(true, asyncResult => { Dispose(); if (listener != null) { EccReceiptListener.Ecc_Closed(listener); } }, null); }
//关闭连接 public static void Close(IEccReceiptListener listener) { if (GetInstance().eccSocket != null) { if (GetInstance().eccSocket.Socket.Connected) { //关闭并销毁Socket通信对象 GetInstance().eccSocket.Close(listener); } //EccSocket对象置空 GetInstance().eccSocket = null; } }
public static void Connect(EccSocket eccSocket, IEccReceiptListener receiptListener) { //初始化EccSocket if (GetInstance().eccSocket != null && GetInstance().eccSocket.Socket.Connected) { return; } //实例化Ecc通信对象 GetInstance().eccSocket = eccSocket; //连接服务器 GetInstance().eccSocket.Connect(ipep, receiptListener); }
/// <summary> /// 发送数据 /// </summary> /// <param name="message"></param> /// <param name="listener"></param> public void Send(string message, IEccReceiptListener listener) { if (GetInstance().eccSocket == null) { //未连接服务器 listener.Ecc_Sent(listener, message, false); throw new UnconnectedServerException(); } else if (!GetInstance().eccSocket.Socket.Connected) { //未完成与服务器的连接 listener.Ecc_Sent(listener, message, false); throw new UnconnectedCompletionException(); } else { GetInstance().eccSocket.Send(message, listener); } }
//建立连接 public static void Connect(EccManager adapter, IEccReceiptListener receiptListener) { //初始化EccSocket if (GetInstance().eccSocket != null && GetInstance().eccSocket.Socket.Connected) { return; } //保存Ecc适配器对象,并为其设置ECCIoT实例 GetInstance().eccManager = adapter; adapter.EcciotInstance = GetInstance(); //实例化Ecc通信对象 GetInstance().eccSocket = new EccSocket(GetInstance().eccManager) { //设置字符编码 Encoding = Encoding }; //连接服务器 GetInstance().eccSocket.Connect(ipep, receiptListener); }
/// <summary> /// /// </summary> public EccSocket(IEccReceiptListener receiptListener, IEccDataReceiveListener dataReceiveListener, IEccExceptionListener exceptionListener) { EccReceiptListener = receiptListener; EccDataReceiveListener = dataReceiveListener; EccExceptionListener = exceptionListener; }
void IEccReceiptListener.Ecc_Closed(IEccReceiptListener listener) { listener.Ecc_Closed(listener); }
void IEccReceiptListener.Ecc_Sent(IEccReceiptListener listener, string msg, bool isSucceed) { listener.Ecc_Sent(listener, msg, isSucceed); }
/*操作回执回调接口*/ void IEccReceiptListener.Ecc_Connection(IEccReceiptListener listener, bool isSucceed) { listener.Ecc_Connection(listener, isSucceed); }