Beispiel #1
0
        /// <summary>
        /// 发送网络消息
        /// </summary>
        /// <param name="opCode"></param>
        /// <param name="subCode"></param>
        /// <param name="value"></param>
        public void Send(int opCode, int subCode, object value)
        {
            SocketMsg msg = new SocketMsg(opCode, subCode, value);

            byte[] data   = EncoderTool.EncodeMsg(msg);
            byte[] packet = EncoderTool.EnconderPacket(data);

            Send(packet);
        }
Beispiel #2
0
        /// <summary>
        /// 发送网络消息
        /// </summary>
        /// <param name="opCode"></param>
        /// <param name="subCode"></param>
        /// <param name="value"></param>
        public void Send(int opCode, int subCode, object value)
        {
            SocketMsg msg = new SocketMsg(opCode, subCode, value);

            byte[] data   = EncoderTool.EncodeMsg(msg);
            byte[] packet = EncoderTool.EncoderPacket(data);

            sendQueue.Enqueue(packet);

            if (!isSendProcess)
            {
                ProcessSend();
            }
            //try
            //{ clientSocket.Send(packet); }
            //catch (Exception e)
            //{ Console.WriteLine(e.Message); }
        }
Beispiel #3
0
        /// <summary>
        /// 处理接收的数据
        /// </summary>
        public void ProcessReceive()
        {
            isReceiveProcess = true;

            byte[] data = EncoderTool.DecoderPacket(ref dataCache);
            if (data == null)
            {
                isReceiveProcess = false;
                return;
            }

            SocketMsg msg = EncoderTool.DecodeMsg(data);

            //解析完毕回调给上层
            if (receiveCompleted != null)
            {
                receiveCompleted(this, msg);
            }

            ProcessReceive();
        }
Beispiel #4
0
        /// <summary>
        /// 处理接收的数据
        /// </summary>
        private void ProcessReceive()
        {
            isReceiveProcess = true;

            byte[] data = EncoderTool.DeconderPacket(ref dataCache);

            if (data == null)
            {
                isReceiveProcess = false;
                return;
            }

            //TODO 需要再次转成一个具体的类型供使用

            SocketMsg msg = EncoderTool.DeCodeMsg(data);

            //回调给上层
            if (receiveCompleted != null)
            {
                receiveCompleted(this, msg);
            }
            //尾递归
            ProcessReceive();
        }