示例#1
0
 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;
     }
 }
示例#2
0
 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 = "断开";
             }
         }
     }
 }
示例#3
0
        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();
                 * }*/
            }
        }
示例#4
0
 private void OnClientClosed(object pSender, TCPClientSession pSession)
 {
     MainForm.Ins.OnDisconnected(pSession);
 }
示例#5
0
 private void OnClientDisconnected(object pSender, TCPClientSession pSession)
 {
     MainForm.Ins.UpdateCount(m_Server.m_ClientCount);
     MainForm.Ins.OnDisconnected(pSession);
 }