//发送消息到服务器 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); }
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(); }