Ejemplo n.º 1
0
        //发送消息到服务器
        public void SendMsg(ProtoDefine protoType, IExtensible protoData)
        {
            //byte[] temp = Encoding.UTF8.GetBytes(msg);
            NetMsgData msg = NetMsgData.GetMsgData(protoType, protoData);

            byte[] data = NetUtilcs.PackNetMsg(msg);
            stream.Write(data, 0, data.Length);
            Debug.Log("发送消息 -> " + msg.ProtoId + data);
        }
Ejemplo n.º 2
0
        void Send()
        {
            while (this.mIsRunning)
            {
                if (mSendingMsgQueue.Count == 0)
                {
                    lock (this.mSendLock)
                    {
                        while (this.mSendWaitingMsgQueue.Count == 0)
                        {
                            Monitor.Wait(this.mSendLock);
                        }
                        Queue <NetMsgData> temp = this.mSendingMsgQueue;
                        this.mSendingMsgQueue     = this.mSendWaitingMsgQueue;
                        this.mSendWaitingMsgQueue = temp;
                    }
                }
                else
                {
                    try
                    {
                        NetMsgData msg  = this.mSendingMsgQueue.Dequeue();
                        byte[]     data = NetUtilcs.PackNetMsg(msg);
                        mSocket.Send(data, data.Length, SocketFlags.None);
                        Debug.Log("client send: " + (ProtoDefine)msg.ProtoId);
                    }
                    catch (System.Exception e)
                    {
                        Debug.LogError(e.Message);
                        Disconnect();
                    }
                }
            }

            this.mSendingMsgQueue.Clear();
            this.mSendWaitingMsgQueue.Clear();
        }