public void OnConnected(TCPClientSession pSession) { if (InvokeRequired) { Invoke(new AsynOnConnected(delegate(TCPClientSession _Session) { ListViewItem item = new ListViewItem(); item.Text = _Session.ClientID.ToString(); item.SubItems.Add("正常"); item.SubItems.Add("0"); item.SubItems.Add("0"); item.SubItems.Add("0"); item.SubItems.Add("0"); ListView.Items.Add(item); _Session.m_ListItem = item; }), pSession); } else { ListViewItem item = new ListViewItem(); item.Text = pSession.ClientID.ToString(); item.SubItems.Add("正常"); item.SubItems.Add("0"); item.SubItems.Add("0"); item.SubItems.Add("0"); item.SubItems.Add("0"); ListView.Items.Add(item); pSession.m_ListItem = item; } }
public void OnDisconnected(TCPClientSession pSession) { if (InvokeRequired) { Invoke(new AsynOnDisconnected(delegate(TCPClientSession _Session) { foreach (ListViewItem item in ListView.Items) { if (item.SubItems[0].Text == _Session.ClientID.ToString()) { item.SubItems[1].Text = "断开"; } } }), pSession); } else { foreach (ListViewItem item in ListView.Items) { if (item.SubItems[0].Text == pSession.ClientID.ToString()) { item.SubItems[1].Text = "断开"; } } } }
private void OnDataReceived(object pSender, TCPClientSession pSession) { lock (pSession.MsgBuffer) { var MsgBuffer = pSession.MsgBuffer; var MsgLen = MsgBuffer.ReadableBytes(); if (MsgLen <= 0) { return; } byte[] _MsgData = new byte[MsgLen]; MsgBuffer.ReadBytes(_MsgData, 0, MsgLen); MsgBuffer.Clear(); m_Server.Send(pSession, _MsgData); pSession.UpdateSendInfo(MsgLen); /*while (MsgBuffer.ReadableBytes() >= 8) //包头总长度 * { * int MsgBodyLen = MsgBuffer.ReadInt(); * int MsgLen = MsgBodyLen + 4; //消息长度 * int readLen = MsgBuffer.ReadableBytes(); * * if (MsgLen > readLen) * { * //收到到消息不完整 * MsgBuffer.ResetReaderIndex(); * return; * } * * int MsgID = MsgBuffer.ReadInt(); * * byte[] _MsgData = new byte[MsgBodyLen]; * MsgBuffer.ReadBytes(_MsgData, 0, MsgBodyLen); * * lock (m_Queue) * { * m_Queue.Enqueue(new SocketReceivedData * { * mMsgData = _MsgData, * mMsgID = MsgID * }); * } * * //处理可能的粘包 * MsgBuffer.ReSetBuf(); * }*/ } }
private void OnClientClosed(object pSender, TCPClientSession pSession) { MainForm.Ins.OnDisconnected(pSession); }
private void OnClientDisconnected(object pSender, TCPClientSession pSession) { MainForm.Ins.UpdateCount(m_Server.m_ClientCount); MainForm.Ins.OnDisconnected(pSession); }