コード例 #1
0
ファイル: ACKRequestProcessor.cs プロジェクト: hont127/UDPBox
        public ACKRequestProcessor(UDPBox udpBox, float ackDetectDelayTime = 0.3f)
        {
            mWaitACKInfoList          = new List <WaitACKInfo>(32);
            mPackageInterceptMarkList = new List <PackageCompareInfo>(MAGIC_NUMBER_MARK_COUNT);

            mUdpBox             = udpBox;
            mACKDetectDelayTime = ackDetectDelayTime;
        }
コード例 #2
0
ファイル: UDPBox_Test.cs プロジェクト: hont127/UDPBox
        void OnEnable()
        {
            var udpClients = UDPBoxFactory.GeterateUdpClientsArray(1235, 1236);

            mUDPBoxConnect = new UDPBox(udpClients, UDPBoxUtility.DefaultHead);
            mUDPBoxConnect.Start();
            mUDPBoxBroadcast = new UDPBoxBroadcast(udpClients[0], 1234);
        }
コード例 #3
0
        void OnEnable()
        {
            var udpClients1 = UDPBoxFactory.GeterateUdpClientsArray(1234, 1235);

            mUDPBox1 = new UDPBox(udpClients1, UDPBoxUtility.DefaultHead);
            var udpClients2 = UDPBoxFactory.GeterateUdpClientsArray(1235, 1236);

            mUDPBox2 = new UDPBox(udpClients2, UDPBoxUtility.DefaultHead);
        }
コード例 #4
0
ファイル: LargePackageHandler.cs プロジェクト: hont127/UDPBox
        public override void Process(UDPBox udpBox, byte[] packageBytes, IPEndPoint ipEndPoint)
        {
            if (!mTemplate.Deserialize(packageBytes))
            {
                return;
            }

            var package_id                  = mTemplate.ConcretePackageID;
            var package_uuid                = mTemplate.ConcretePackageUUID;
            var package_segment_id          = mTemplate.SegmentID;
            var package_segment_total_count = mTemplate.SegmentTotalCount;

            var targetPackageInfoIndex = mLargePackageInfoList.FindIndex(m => m.ConcretePackageID == package_id &&
                                                                         m.ConcretePackageUUID == package_uuid);

            if (targetPackageInfoIndex == -1)
            {
                var largePackageInfo = new LargePackageInfo();
                largePackageInfo.ConcretePackageID   = package_id;
                largePackageInfo.ConcretePackageUUID = package_uuid;
                largePackageInfo.RecycleTimer        = RECYCLE_TIME;
                largePackageInfo.SegmentInfoArray    = new SegmentInfo[package_segment_total_count];

                mLargePackageInfoList.Add(largePackageInfo);
                targetPackageInfoIndex = mLargePackageInfoList.Count - 1;
            }

            var item = mLargePackageInfoList[targetPackageInfoIndex];

            item.SegmentInfoArray[package_segment_id].Bytes = mTemplate.BytesList.ToArray();
            mLargePackageInfoList[targetPackageInfoIndex]   = item;

            var flag = true;

            for (int i = 0; i < item.SegmentInfoArray.Length; i++)
            {
                if (item.SegmentInfoArray[i].Bytes == null)
                {
                    flag = false;
                    break;
                }
            }

            if (flag)
            {
                mLargePackageInfoList.RemoveAt(targetPackageInfoIndex);
                List <byte> combine_bytes = new List <byte>();
                for (int i = 0; i < item.SegmentInfoArray.Length; i++)
                {
                    combine_bytes.AddRange(item.SegmentInfoArray[i].Bytes);
                }

                udpBox.ProcessPackage(combine_bytes.ToArray(), ipEndPoint);
            }
        }
コード例 #5
0
ファイル: PingPongHandler.cs プロジェクト: hont127/UDPBox
        public override void Process(UDPBox udpBox, byte[] packageBytes, IPEndPoint ipEndPoint)
        {
            if (!mTemplate.Deserialize(packageBytes))
            {
                return;
            }

            mTemplate.PingPong = mTemplate.PingPong == PingPongPackage.EPingPong.Ping ? PingPongPackage.EPingPong.Pong : PingPongPackage.EPingPong.Ping;

            udpBox.SendMessage(mTemplate.Serialize(), ipEndPoint);
        }
コード例 #6
0
ファイル: UDPBoxContainer.cs プロジェクト: hont127/UDPBox
 public void Release()
 {
     State = EState.Released;
     if (mUseInternalBroadcastLogic)
     {
         mBroadcastUdpClient.Close();
         mBroadcastUdpClient.Dispose();
         mUDPBoxBroadcast?.ReleaseThread();
     }
     UDPBox.UnregistMessageIntercept(InterceptAndUpdateConnectState);
     UDPBox.UnregistWorkThreadOperate(RefreshConnectStateInWorkThread);
     UDPBox.Dispose();
 }
コード例 #7
0
ファイル: UDPBoxContainer.cs プロジェクト: hont127/UDPBox
        public void Start(bool isMaster)
        {
            IsMaster = isMaster;

            if (mUseInternalBroadcastLogic)
            {
                mBroadcastUdpClient = UDPBoxFactory.GeterateUdpClient(BroadcastListenPort);
                mUDPBoxBroadcast    = UDPBoxFactory.GenerateStandardUDPBoxBroadcastAndSetup(mBroadcastUdpClient, BroadcastSendPort, BroadcastNetPrefixIP, this);
            }

            UDPBox.RegistMessageIntercept(InterceptAndUpdateConnectState);
            UDPBox.RegistWorkThreadOperate(RefreshConnectStateInWorkThread);
            UDPBox.Start();
        }
コード例 #8
0
ファイル: UDPBoxContainer.cs プロジェクト: hont127/UDPBox
        public void Initialization(string packageHead, bool useInternalBroadcastLogic)
        {
            mUseInternalBroadcastLogic = useInternalBroadcastLogic;

            var udpClientArray = new UDPBox_UDPClient[UdpBoxEndPort - UdpBoxBeginPort];

            for (int i = 0, port = UdpBoxBeginPort; port < UdpBoxEndPort; i++, port++)
            {
                udpClientArray[i] = UDPBoxFactory.GeterateUdpClient(port);
            }
            UDPBox.Initialization(udpClientArray, packageHead);

            mEstablishConnectPackage = new EstablishConnectPackage(PackageHeadBytes);
            mPingPongPackageTemplate = new PingPongPackage(PackageHeadBytes);
            SelfIPAddress            = SelfIPAddress ?? UDPBoxUtility.GetSelfIP(BroadcastNetPrefixIP);
        }
コード例 #9
0
ファイル: LargePackageHandler.cs プロジェクト: hont127/UDPBox
        public override void OnRegistedToUDPBox(UDPBox udpBox)
        {
            base.OnRegistedToUDPBox(udpBox);

            udpBox.RegistWorkThreadOperate(WorkThreadOperateLoop);
        }
コード例 #10
0
ファイル: HandlerBase.cs プロジェクト: hont127/UDPBox
 public abstract void Process(UDPBox udpBox, byte[] packageBytes, IPEndPoint ipEndPoint);
コード例 #11
0
ファイル: HandlerBase.cs プロジェクト: hont127/UDPBox
 public virtual void OnUnregistedFromUDPBox(UDPBox udpBox)
 {
 }
コード例 #12
0
ファイル: UDPBoxContainer.cs プロジェクト: hont127/UDPBox
 public void UnregistWorkThreadOperate(Action operateAction)
 {
     UDPBox.UnregistWorkThreadOperate(operateAction);
 }
コード例 #13
0
ファイル: UDPBoxContainer.cs プロジェクト: hont127/UDPBox
 public void UnregistHandler(HandlerBase handler)
 {
     UDPBox.RegistHandler(handler);
 }
コード例 #14
0
ファイル: UDPBoxContainer.cs プロジェクト: hont127/UDPBox
 public void SendUDPMessage(byte[] bytes, IPEndPoint ipEndPoint)
 {
     UDPBox.SendMessage(bytes, ipEndPoint);
 }
コード例 #15
0
ファイル: UDPBoxContainer.cs プロジェクト: hont127/UDPBox
 public void SetLogger(IUDPBoxLogger logger)
 {
     UDPBox.SetLogger(logger);
 }
コード例 #16
0
ファイル: HandlerBase.cs プロジェクト: hont127/UDPBox
 public virtual void OnRegistedToUDPBox(UDPBox udpBox)
 {
 }
コード例 #17
0
 public override void Process(UDPBox udpBox, byte[] packageBytes, IPEndPoint ipEndPoint)
 {
     mTemplate.Deserialize(packageBytes);
     UnityEngine.Debug.Log("!! " + mTemplate.byteList.Count);
 }
コード例 #18
0
ファイル: UDPBoxContainer.cs プロジェクト: hont127/UDPBox
 public UDPBoxContainer()
 {
     State   = EState.NoStart;
     mRandom = new System.Random();
     UDPBox  = new UDPBox();
 }