/// <summary> /// 发送数据报文 /// </summary> /// <param name="datagram"></param> public virtual void Send(string datagram) { if (String.IsNullOrEmpty(datagram)) { return; } //获得报文的编码字节 byte[] data = _coder.GetEncodingBytes(datagram); switch (_connectState) { case ConnectState.NotConnect: throw (new ApplicationException("没有连接服务器,不能发送数据")); case ConnectState.Connecting: _cliSocket.BeginSend(data, 0, data.Length, SocketFlags.None, new AsyncCallback(SendDataEnd), _cliSocket); break; case ConnectState.Connected: if (_session.ClientSocket.Connected) { _session.ClientSocket.BeginSend(data, 0, data.Length, SocketFlags.None, new AsyncCallback(SendDataEnd), _session.ClientSocket); } else { _connectState = ConnectState.NotConnect; } break; } }
/// <summary> /// 发送数据 /// </summary> /// <param name="recvDataClient">接收数据的客户端会话</param> /// <param name="datagram">数据报文</param> public virtual void Send(Session recvDataClient, string datagram) { if (String.IsNullOrEmpty(datagram)) { return; } //获得数据编码 byte[] data = _coder.GetEncodingBytes(datagram); try { recvDataClient.ClientSocket.BeginSend(data, 0, data.Length, SocketFlags.None, new AsyncCallback(SendDataEnd), recvDataClient.ClientSocket); } catch (SocketException) { if (recvDataClient != null) { recvDataClient.Datagram = null; _sessionTable.Remove(recvDataClient.ID); _clientCount--; //客户端强制关闭链接 if (ClientClose != null) { ClientClose(this, new NetEventArgs(recvDataClient)); } recvDataClient.Close(); } } //{1085D671-3AB9-4a64-BDAD-A36F24D77384} catch (ObjectDisposedException ex)//先把异常截获了,暂时对异常先不做处理,我在考虑一下看怎么处理 { } }