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="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); } }
/// <summary> /// 销毁对象并执行回调 /// </summary> /// <param name="listener"></param> public void Close(IEccReceiptListener listener) { Socket.BeginDisconnect(true, asyncResult => { Dispose(); if (listener != null) { EccReceiptListener.Ecc_Closed(listener); } }, null); }