private void AddSendCheck(NetUdpFixedSizePackage mPackage) { if (ServerConfig.bNeedCheckPackage) { //mPackage.nOrderId = nCurrentWaitSendOrderId; UInt16 nOrderId = mPackage.nOrderId; CheckPackageInfo mCheckInfo = mCheckPackagePool.Pop(); mCheckInfo.nReSendCount = 0; mCheckInfo.mPackage = mPackage; mCheckInfo.mTimer.restart(); if (mWaitCheckSendDic.TryAdd(nOrderId, mCheckInfo)) { //AddSendPackageOrderId (); } else { throw new Exception("请增大循环Id 的范围,或者 减慢发包速度"); } } DebugSystem.Assert(mPackage.nOrderId >= ServerConfig.nUdpMinOrderId); //DebugSystem.Log ("Server Send nOrderId: " + mPackage.nOrderId); mUdpPeer.SendNetPackage(mPackage); }
private void SendNetStream(byte[] msg, int offset, int Length) { DebugSystem.Assert(Length >= ClientConfig.nUdpPackageFixedHeadSize, "发送长度要大于等于 包头: " + Length); int nSendLength = mSocket.SendTo(msg, offset, Length, SocketFlags.None, remoteEndPoint); DebugSystem.Assert(nSendLength > 0, "Client 发送失败: " + nSendLength); }
public void SendNetData(UInt16 id, object data) { DebugSystem.Assert(id > 50, "Udp 系统内置命令 此逻辑不处理"); IMessage data1 = data as IMessage; byte[] stream = Protocol3Utility.SerializePackage(data1); mUdpCheckPool.SendCheckPackage(id, stream); }
public void Init(T prefab, int count = 1) { DebugSystem.Assert(prefab != null); this.prefab = prefab; for (int i = 0; i < count; i++) { T obj = UnityEngine.Object.Instantiate(prefab); mObjectPool.Enqueue(obj); } }
private void SendNetStream(NetEndPointPackage mEndPointPacakge) { EndPoint remoteEndPoint = mEndPointPacakge.mRemoteEndPoint; NetPackage mPackage = mEndPointPacakge.mPackage; DebugSystem.Assert(mPackage.Length >= ServerConfig.nUdpPackageFixedHeadSize, "发送长度要大于等于 包头: " + mPackage.Length); int nSendLength = mSocket.SendTo(mPackage.buffer, 0, mPackage.Length, SocketFlags.None, remoteEndPoint); DebugSystem.Assert(nSendLength > 0, "Server 发送失败: " + nSendLength); ObjectPoolManager.Instance.mNetEndPointPackagePool.recycle(mEndPointPacakge); }
public void SendCheckPackage(UInt16 id, byte[] buffer) { DebugSystem.Assert(id > 50, "Udp 系统内置命令 此逻辑不处理"); int readBytes = 0; int nBeginIndex = 0; UInt16 groupCount = 0; if (buffer.Length % ClientConfig.nUdpPackageFixedBodySize == 0) { groupCount = (UInt16)(buffer.Length / ClientConfig.nUdpPackageFixedBodySize); } else { groupCount = (UInt16)(buffer.Length / ClientConfig.nUdpPackageFixedBodySize + 1); } //DebugSystem.Log ("Client bufferLength: " + buffer.Length); while (nBeginIndex < buffer.Length) { if (nBeginIndex + ClientConfig.nUdpPackageFixedBodySize > buffer.Length) { readBytes = buffer.Length - nBeginIndex; } else { readBytes = ClientConfig.nUdpPackageFixedBodySize; } var mPackage = ObjectPoolManager.Instance.mUdpFixedSizePackagePool.Pop(); mPackage.nOrderId = this.nCurrentWaitSendOrderId; mPackage.nGroupCount = groupCount; mPackage.nPackageId = id; mPackage.Length = readBytes + ClientConfig.nUdpPackageFixedHeadSize; Array.Copy(buffer, nBeginIndex, mPackage.buffer, ClientConfig.nUdpPackageFixedHeadSize, readBytes); NetPackageEncryption.Encryption(mPackage); AddSendCheck(mPackage); AddSendPackageOrderId(); groupCount = 1; nBeginIndex += readBytes; } }
public NetUdpFixedSizePackage GetUdpSystemPackage(UInt16 id, object data) { DebugSystem.Assert(id <= 50, "不是 Udp 系统内置命令"); IMessage data1 = data as IMessage; byte[] stream = Protocol3Utility.SerializePackage(data1); var mPackage = ObjectPoolManager.Instance.mUdpFixedSizePackagePool.Pop(); mPackage.nOrderId = 0; mPackage.nGroupCount = 0; mPackage.nPackageId = id; mPackage.Length = stream.Length + ServerConfig.nUdpPackageFixedHeadSize; Array.Copy(stream, 0, mPackage.buffer, ServerConfig.nUdpPackageFixedHeadSize, stream.Length); NetPackageEncryption.Encryption(mPackage); return(mPackage); }