/// public static void EnqueueSend(IC2S_Msg msg) { lock (mSendLocker) { mSendMessageQueue.Enqueue(msg); } }
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); }