public void ReceivePackage(int len, byte[] data)
        {
            byte[] finalData = data.SubArray(0, len);

            packetBuffer = packetBuffer.Concat(finalData);

            //标记是否有完整的包接收到
            bool hasCompletePacket = false;

            do
            {
                int packSize = GetDataLength(packetBuffer);
                if (packSize == 0)
                {
                    break;
                }
                hasCompletePacket = packetBuffer.Length >= packSize;

                if (hasCompletePacket)
                {
                    byte[] packBytes = ArrayEx.CutHeadByLength(ref packetBuffer, packSize);
                    handleQueue.AddAction((act) =>
                    {
                        NetPackageHandler.HandlePackage(server, Package.PrasePackage(packBytes), act);
                    });
                }
            } while (hasCompletePacket);
        }
Exemple #2
0
 public void HandlePackageInQueue()
 {
     if (packageList.Count > 0)
     {
         for (int i = 0; i < packageList.Count; i++)
         {
             handleQueue.AddAction((act) => {
                 NetPackageHandler.HandlePackage(server, packageList[i], act);
             });
         }
         packageList.Clear();
     }
 }