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; }
void OnEnable() { var udpClients = UDPBoxFactory.GeterateUdpClientsArray(1235, 1236); mUDPBoxConnect = new UDPBox(udpClients, UDPBoxUtility.DefaultHead); mUDPBoxConnect.Start(); mUDPBoxBroadcast = new UDPBoxBroadcast(udpClients[0], 1234); }
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); }
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); } }
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); }
public void Release() { State = EState.Released; if (mUseInternalBroadcastLogic) { mBroadcastUdpClient.Close(); mBroadcastUdpClient.Dispose(); mUDPBoxBroadcast?.ReleaseThread(); } UDPBox.UnregistMessageIntercept(InterceptAndUpdateConnectState); UDPBox.UnregistWorkThreadOperate(RefreshConnectStateInWorkThread); UDPBox.Dispose(); }
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(); }
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); }
public override void OnRegistedToUDPBox(UDPBox udpBox) { base.OnRegistedToUDPBox(udpBox); udpBox.RegistWorkThreadOperate(WorkThreadOperateLoop); }
public abstract void Process(UDPBox udpBox, byte[] packageBytes, IPEndPoint ipEndPoint);
public virtual void OnUnregistedFromUDPBox(UDPBox udpBox) { }
public void UnregistWorkThreadOperate(Action operateAction) { UDPBox.UnregistWorkThreadOperate(operateAction); }
public void UnregistHandler(HandlerBase handler) { UDPBox.RegistHandler(handler); }
public void SendUDPMessage(byte[] bytes, IPEndPoint ipEndPoint) { UDPBox.SendMessage(bytes, ipEndPoint); }
public void SetLogger(IUDPBoxLogger logger) { UDPBox.SetLogger(logger); }
public virtual void OnRegistedToUDPBox(UDPBox udpBox) { }
public override void Process(UDPBox udpBox, byte[] packageBytes, IPEndPoint ipEndPoint) { mTemplate.Deserialize(packageBytes); UnityEngine.Debug.Log("!! " + mTemplate.byteList.Count); }
public UDPBoxContainer() { State = EState.NoStart; mRandom = new System.Random(); UDPBox = new UDPBox(); }