Beispiel #1
0
 ///
 public static void EnqueueSend(IC2S_Msg msg)
 {
     lock (mSendLocker)
     {
         mSendMessageQueue.Enqueue(msg);
     }
 }
Beispiel #2
0
        public bool SendMessage(IC2S_Msg msg)
        {
            if (!CanWorking)
            {
                throw new Exception("SendMessage:this tcp networking cannot working, because mNetworkingModel is null");
            }
            List <TcpIPClient> clientList = new List <TcpIPClient>();

            if (msg.IsCommonMsg)
            {
                if (null != mLocalClient)
                {
                    clientList.Add(mLocalClient);
                }
                if (null != mMatchClient)
                {
                    clientList.Add(mMatchClient);
                }
            }
            else if (msg.IsMatchMsg)
            {
                clientList.Add(mMatchClient);
            }
            else
            {
                clientList.Add(mLocalClient);
            }
            for (int i = 0; i < clientList.Count; ++i)
            {
                if (null == clientList[i])
                {
                    Debug.LogWarning(string.Format("发送[{0}]消息时还未与服务器建立连接!", ((SendMsgType)msg.MessageID).ToString()));
                    UnLockNetMsgScreenLocked();
                    return(false);
                }
                if (msg.NeedLockScreen)
                {
                    if (!mWaitUnlockMsgs.Contains(msg.MessageID))
                    {
                        mWaitUnlockMsgs.Add(msg.UnLockedID);
                    }
                    mNetworkingModel.TcpNetLockScreen();
                }
                if (!clientList[i].SendMsg(msg))
                {
                    UnLockNetMsgScreenLocked();
                    return(false);
                }
            }
            return(true);
        }
        public bool SendMsg(IC2S_Msg msg)
        {
            if (!mConnected)
            {
                //PopupDialogView.Popup(弹框类型.错误提示, Text.SharedShowStrings.连接服务器失败.ToString() + "," + Text.SharedShowStrings.请重试.ToString() + "。");
                Debug.LogWarning(string.Format("发送[{0}]消息时,与服务器的连接是断开的!!!", ((RecvMsgType)msg.MessageID).ToString()));
                return(false);
            }
            Stream s = msg.Serializer;

            s.Seek(0, SeekOrigin.Begin);
            byte[] buffer = new byte[s.Length];
            s.Read(buffer, 0, buffer.Length);
            this.SendTo(buffer);
#if NETFX_CORE && UNITY_METRO && !UNITY_EDITOR
            s.Dispose();
#else
            s.Close();
#endif
            //TcpIPMessageQueue.EnqueueSend(msg);
            return(true);
        }