void OnOpen(object sender, System.EventArgs arg) { if (onNetRespEvent != null) { onNetRespEvent(NetMsg.Create(NetMsgType.Connect)); } }
void OnClose(object sender, CloseEventArgs arg) { if (onNetRespEvent != null) { onNetRespEvent(NetMsg.Create(NetMsgType.Disconnect, "OnClose")); } }
/// <summary> /// 连接上服务器 /// </summary> void OnConnect(IAsyncResult asr) { outStream = client.GetStream(); client.GetStream().BeginRead(byteBuffer, 0, MAX_READ, new AsyncCallback(OnRead), null); if (_onNetRespEvent != null) { OnNetRespEvent(NetMsg.Create(NetMsgType.Connect)); } }
public bool Close(string reason) { if (socket == null) { return(false); } //if (socket.Connected) { socket.Close(); } socket = null; onNetRespEvent(NetMsg.Create(NetMsgType.Disconnect, reason)); return(true); }
public bool Close(string reason) { bool result = false; if (webSocket != null && webSocket.IsAlive) { webSocket.Close(); ((IDisposable)webSocket).Dispose(); webSocket = null; result = true; } onNetRespEvent(NetMsg.Create(NetMsgType.Disconnect, reason)); return(result); }
public bool Close(string reason) { lock (_lockObject) { if (_socket == null) { return(false); } if (_socket.Connected) { _socket.Close(); } _socket.Dispose(); _socket = null; _onNetRespEvent(NetMsg.Create(NetMsgType.Disconnect, reason)); return(true); } }
void OnMessage(object sender, MessageEventArgs arg) { if (onNetRespEvent != null) { var _event = NetMsg.Create(NetMsgType.Connect); if (arg.IsBinary) { _event.Data = arg.RawData; _event.MsgType = NetMsgType.Message; } else if (arg.IsText) { _event.MsgType = NetMsgType.Message; _event.Data = Encoding.UTF8.GetBytes(arg.Data); } onNetRespEvent(_event); } }
/// <summary> /// 读取消息 /// </summary> void OnRead(IAsyncResult asr) { int bytesRead = 0; try { lock (client.GetStream()) { //读取字节流到缓冲区 bytesRead = client.GetStream().EndRead(asr); } if (bytesRead < 1) { //包尺寸有问题,断线处理 OnDisconnected(DisType.Disconnect, "bytesRead < 1"); return; } if (decoder != null) { byte[] msg = decoder.Decode(byteBuffer, bytesRead); if (msg != null) { var _event = NetMsg.Create(NetMsgType.Message); _event.Data = msg; OnNetRespEvent(_event); } } //OnReceive(byteBuffer, bytesRead); //分析数据包内容,抛给逻辑层 lock (client.GetStream()) { //分析完,再次监听服务器发过来的新消息 Array.Clear(byteBuffer, 0, byteBuffer.Length); //清空数组 client.GetStream().BeginRead(byteBuffer, 0, MAX_READ, new AsyncCallback(OnRead), null); } } catch (Exception ex) { //PrintBytes(); OnDisconnected(DisType.Exception, ex.Message); } }
public bool Close() { if (client != null) { bool state = client.Connected; if (state) { client.Close(); } client = null; if (state && _onNetRespEvent != null) { OnNetRespEvent(NetMsg.Create(NetMsgType.Disconnect)); //onDisConnected(Id); } return(state); } return(false); }
private void IoCompleted(object sender, SocketAsyncEventArgs e) { try { if (!CheckSocketState(e)) { return; } switch (e.LastOperation) { case SocketAsyncOperation.Receive: ReceiveCompleted(e); break; case SocketAsyncOperation.Send: SendCompleted(e); break; case SocketAsyncOperation.Connect: PackIdReset(); _onNetRespEvent(NetMsg.Create(NetMsgType.Connect)); ReceiveAsync(); break; case SocketAsyncOperation.Disconnect: Close("LastOperation.Disconnect"); break; default: Close("LastOperation" + e.LastOperation); break; } } catch (Exception ex) { Close("IoCompleted:\n" + ex); } }