Exemplo n.º 1
0
        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);
        }
Exemplo n.º 2
0
        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);
        }
Exemplo n.º 4
0
 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);
     }
 }
Exemplo n.º 5
0
        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);
        }
Exemplo n.º 6
0
        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);
        }