亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? ccc.cpp

?? Last Update: Jan 22 2009 可靠UDP傳輸, 一套高效的基于windows平臺的C++ 開發(fā)庫
?? CPP
字號:
/*****************************************************************************Copyright (c) 2001 - 2008, The Board of Trustees of the University of Illinois.All rights reserved.Redistribution and use in source and binary forms, with or withoutmodification, are permitted provided that the following conditions aremet:* Redistributions of source code must retain the above  copyright notice, this list of conditions and the  following disclaimer.* Redistributions in binary form must reproduce the  above copyright notice, this list of conditions  and the following disclaimer in the documentation  and/or other materials provided with the distribution.* Neither the name of the University of Illinois  nor the names of its contributors may be used to  endorse or promote products derived from this  software without specific prior written permission.THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "ASIS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULARPURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER ORCONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, ORPROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OFLIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDINGNEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THISSOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.*****************************************************************************//*****************************************************************************written by   Yunhong Gu, last updated 12/01/2008*****************************************************************************/#include "core.h"#include "ccc.h"#include <cmath>CCC::CCC():m_iSYNInterval(CUDT::m_iSYNInterval),m_dPktSndPeriod(1.0),m_dCWndSize(16.0),m_pcParam(NULL),m_iPSize(0),m_iACKPeriod(0),m_iACKInterval(0),m_bUserDefinedRTO(false),m_iRTO(-1){}CCC::~CCC(){   delete [] m_pcParam;}void CCC::setACKTimer(const int& msINT){   m_iACKPeriod = msINT;   if (m_iACKPeriod > m_iSYNInterval)      m_iACKPeriod = m_iSYNInterval;}void CCC::setACKInterval(const int& pktINT){   m_iACKInterval = pktINT;}void CCC::setRTO(const int& usRTO){   m_bUserDefinedRTO = true;   m_iRTO = usRTO;}void CCC::sendCustomMsg(CPacket& pkt) const{   CUDT* u = CUDT::getUDTHandle(m_UDT);   if (NULL != u)      u->m_pSndQueue->sendto(u->m_pPeerAddr, pkt);}const CPerfMon* CCC::getPerfInfo(){   CUDT* u = CUDT::getUDTHandle(m_UDT);   if (NULL != u)      u->sample(&m_PerfInfo, false);   return &m_PerfInfo;}void CCC::setMSS(const int& mss){   m_iMSS = mss;}void CCC::setBandwidth(const int& bw){   m_iBandwidth = bw;}void CCC::setSndCurrSeqNo(const int32_t& seqno){   m_iSndCurrSeqNo = seqno;}void CCC::setRcvRate(const int& rcvrate){   m_iRcvRate = rcvrate;}void CCC::setMaxCWndSize(const int& cwnd){   m_dMaxCWndSize = cwnd;}void CCC::setRTT(const int& rtt){   m_iRTT = rtt;}void CCC::setUserParam(const char* param, const int& size){   delete [] m_pcParam;   m_pcParam = new char[size];   memcpy(m_pcParam, param, size);}//void CUDTCC::init(){   m_iRCInterval = m_iSYNInterval;   m_LastRCTime = CTimer::getTime();   setACKTimer(m_iRCInterval);   m_bSlowStart = true;   m_iLastAck = m_iSndCurrSeqNo;   m_bLoss = false;   m_iLastDecSeq = CSeqNo::decseq(m_iLastAck);   m_dLastDecPeriod = 1;   m_iAvgNAKNum = 0;   m_iNAKCount = 0;   m_iDecRandom = 1;   m_dCWndSize = 16;   m_dPktSndPeriod = 1;}void CUDTCC::onACK(const int32_t& ack){   uint64_t currtime = CTimer::getTime();   if (currtime - m_LastRCTime < (uint64_t)m_iRCInterval)      return;   m_LastRCTime = currtime;   if (m_bSlowStart)   {      m_dCWndSize += CSeqNo::seqlen(m_iLastAck, ack);      m_iLastAck = ack;      if (m_dCWndSize > m_dMaxCWndSize)      {         m_bSlowStart = false;         if (m_iRcvRate > 0)            m_dPktSndPeriod = 1000000.0 / m_iRcvRate;         else            m_dPktSndPeriod = m_dCWndSize / (m_iRTT + m_iRCInterval);      }   }   else      m_dCWndSize = m_iRcvRate / 1000000.0 * (m_iRTT + m_iRCInterval) + 16;   // During Slow Start, no rate increase   if (m_bSlowStart)      return;   if (m_bLoss)   {      m_bLoss = false;      return;   }   int64_t B = (int64_t)(m_iBandwidth - 1000000.0 / m_dPktSndPeriod);   if ((m_dPktSndPeriod > m_dLastDecPeriod) && ((m_iBandwidth / 9) < B))      B = m_iBandwidth / 9;   double inc;   if (B <= 0)      inc = 1.0 / m_iMSS;   else   {      // inc = max(10 ^ ceil(log10( B * MSS * 8 ) * Beta / MSS, 1/MSS)      // Beta = 1.5 * 10^(-6)      inc = pow(10.0, ceil(log10(B * m_iMSS * 8.0))) * 0.0000015 / m_iMSS;      if (inc < 1.0/m_iMSS)         inc = 1.0/m_iMSS;   }   m_dPktSndPeriod = (m_dPktSndPeriod * m_iRCInterval) / (m_dPktSndPeriod * inc + m_iRCInterval);   //set maximum transfer rate   if ((NULL != m_pcParam) && (m_iPSize != 8))   {      int64_t maxSR = *(int64_t*)m_pcParam;      if (maxSR <= 0)         return;      double minSP = 1000000.0 / (double(maxSR) / m_iMSS);      if (m_dPktSndPeriod < minSP)         m_dPktSndPeriod = minSP;   }}void CUDTCC::onLoss(const int32_t* losslist, const int&){   //Slow Start stopped, if it hasn't yet   if (m_bSlowStart)   {      m_bSlowStart = false;      if (m_iRcvRate > 0)         m_dPktSndPeriod = 1000000.0 / m_iRcvRate;      else         m_dPktSndPeriod = m_dCWndSize / (m_iRTT + m_iRCInterval);   }   m_bLoss = true;   if (CSeqNo::seqcmp(losslist[0] & 0x7FFFFFFF, m_iLastDecSeq) > 0)   {      m_dLastDecPeriod = m_dPktSndPeriod;      m_dPktSndPeriod = ceil(m_dPktSndPeriod * 1.125);      m_iAvgNAKNum = (int)ceil(m_iAvgNAKNum * 0.875 + m_iNAKCount * 0.125);      m_iNAKCount = 1;      m_iDecCount = 1;      m_iLastDecSeq = m_iSndCurrSeqNo;      // remove global synchronization using randomization      srand(m_iLastDecSeq);      m_iDecRandom = (int)ceil(rand() * double(m_iAvgNAKNum) / (RAND_MAX + 1.0));      if (m_iDecRandom < 1)         m_iDecRandom = 1;   }   else if ((m_iDecCount ++ < 5) && (0 == (++ m_iNAKCount % m_iDecRandom)))   {      // 0.875^5 = 0.51, rate should not be decreased by more than half within a congestion period      m_dPktSndPeriod = ceil(m_dPktSndPeriod * 1.125);      m_iLastDecSeq = m_iSndCurrSeqNo;   }}void CUDTCC::onTimeout(){   if (m_bSlowStart)   {      m_bSlowStart = false;      if (m_iRcvRate > 0)         m_dPktSndPeriod = 1000000.0 / m_iRcvRate;      else         m_dPktSndPeriod = m_dCWndSize / (m_iRTT + m_iRCInterval);   }}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
欧美日韩国产综合一区二区三区| 欧美午夜在线一二页| 国产欧美一区二区三区沐欲| 国产精品美女久久久久aⅴ | 久久亚洲综合色一区二区三区| 国产一区高清在线| 久久精品水蜜桃av综合天堂| 91精彩视频在线| 成人欧美一区二区三区在线播放| 精品少妇一区二区三区在线视频| 久久99国产乱子伦精品免费| 日韩理论片在线| 久久噜噜亚洲综合| 欧美电视剧在线观看完整版| 在线观看视频一区| 97久久久精品综合88久久| 亚洲chinese男男1069| 亚洲丝袜美腿综合| 日本高清不卡视频| 懂色av一区二区三区免费看| 国产精品对白交换视频| 精品国产免费人成在线观看| 欧美性猛片xxxx免费看久爱| 国产精品国产馆在线真实露脸| 精品国产99国产精品| 欧美日韩三级视频| 欧美亚洲禁片免费| 久草中文综合在线| 久久99深爱久久99精品| 偷拍自拍另类欧美| 美日韩一级片在线观看| 国产精品久久夜| 久久久久久黄色| 欧美高清精品3d| 欧美日韩第一区日日骚| 成人高清视频免费观看| 成人激情视频网站| 91在线看国产| 色天使久久综合网天天| 一本一本久久a久久精品综合麻豆| 不卡高清视频专区| 色综合久久天天综合网| 成人国产精品免费观看视频| 成人动漫视频在线| 色悠悠久久综合| 欧美日韩成人高清| 日韩一区二区三区av| 日本韩国欧美一区二区三区| 91免费国产在线观看| 一本到高清视频免费精品| 色天天综合色天天久久| 欧美人动与zoxxxx乱| 欧美久久久久久久久中文字幕| 欧美一级高清片在线观看| 日韩免费电影网站| 欧美日本国产视频| 久久亚洲影视婷婷| 久久九九全国免费| 色成年激情久久综合| 欧美日韩国产精品成人| 欧美大片顶级少妇| 国产女主播在线一区二区| 亚洲欧美一区二区三区久本道91| 久久久久久久久蜜桃| 亚洲精品国产精华液| 亚洲一区在线观看网站| 午夜精品福利久久久| 国产精品一区二区三区99| jlzzjlzz亚洲女人18| 91免费在线播放| 91视频com| 久久蜜桃av一区二区天堂| 欧美激情综合在线| 麻豆精品视频在线| 亚洲va欧美va人人爽| 国产在线不卡一区| 欧洲精品视频在线观看| 欧美成人乱码一区二区三区| 国产精品沙发午睡系列990531| 一区二区三区.www| 精品在线播放午夜| 欧美性做爰猛烈叫床潮| 国产亚洲女人久久久久毛片| 国内精品写真在线观看| 欧美成人video| 国产成人丝袜美腿| 欧美国产精品中文字幕| 中文字幕一区免费在线观看| 日韩欧美一二三四区| 亚洲一区二区在线观看视频| 国产一区二区三区在线看麻豆| 一区二区在线看| 成人在线综合网| 久久免费午夜影院| 亚洲国产视频一区二区| 成人一区二区在线观看| 精品欧美一区二区三区精品久久| 久久综合九色综合97_久久久 | 国产欧美综合在线观看第十页| 亚洲精品国产a| 91色九色蝌蚪| 亚洲韩国一区二区三区| 国产一区二区美女诱惑| 国产精品久久久久久久久果冻传媒 | 青青草原综合久久大伊人精品优势 | 日韩欧美在线影院| 香蕉成人啪国产精品视频综合网| 欧美性生活久久| 亚洲激情图片qvod| 91福利在线免费观看| 国产精品久久久久婷婷二区次| 国产一区二区美女诱惑| 欧美mv日韩mv国产网站app| 日韩电影免费在线看| 在线一区二区三区四区| 久久精品夜夜夜夜久久| 亚洲免费av高清| 国产成人精品网址| 国产精品看片你懂得| 欧美老年两性高潮| 白白色 亚洲乱淫| 奇米777欧美一区二区| 中文字幕在线不卡国产视频| 欧美一级搡bbbb搡bbbb| 91网站在线观看视频| 久久爱www久久做| 亚洲成av人在线观看| 欧美国产视频在线| 日韩三级高清在线| 欧美主播一区二区三区| 国产精品88888| 久久国产视频网| 亚洲成人av电影在线| 国产精品免费av| 久久精品这里都是精品| 欧美二区在线观看| 在线免费精品视频| 色综合天天做天天爱| 国产在线一区观看| 美女精品一区二区| 天天免费综合色| 夜夜嗨av一区二区三区中文字幕| 久久久久国产一区二区三区四区 | 欧美日韩免费在线视频| 成人深夜视频在线观看| 国产剧情一区二区| 韩国v欧美v亚洲v日本v| 美腿丝袜亚洲一区| 秋霞成人午夜伦在线观看| 亚洲一区二区偷拍精品| 亚洲国产视频网站| 亚洲午夜成aⅴ人片| 一级日本不卡的影视| 亚洲免费观看高清完整版在线观看 | 在线观看日韩av先锋影音电影院| 成人aaaa免费全部观看| 国产91富婆露脸刺激对白 | 中文字幕一区二区三区四区不卡 | 亚洲综合视频在线观看| 亚洲激情自拍视频| 亚洲精品中文在线观看| 亚洲另类色综合网站| 亚洲精品乱码久久久久久久久| 亚洲色图清纯唯美| 一区二区三区四区不卡在线 | 不卡的av网站| 色综合激情久久| 欧美亚洲综合一区| 欧美一区二区三区在线视频| 欧美日韩精品一区二区三区蜜桃| 欧美影院精品一区| 日韩视频123| 日韩精品自拍偷拍| 久久亚洲二区三区| 国产精品区一区二区三区| 精品国产青草久久久久福利| 久久精品在这里| 亚洲欧美经典视频| 日本欧美在线观看| 盗摄精品av一区二区三区| 94-欧美-setu| 欧美一区二区成人| 国产精品久久久99| 亚洲国产aⅴ天堂久久| 久久99精品久久久久婷婷| 国产99久久久国产精品潘金网站| 91亚洲精品久久久蜜桃| 欧美乱熟臀69xxxxxx| 久久夜色精品国产噜噜av | 国产亚洲一区二区三区四区| 国产精品伦一区| 五月综合激情网| 国产在线播放一区三区四| 91网站在线播放| 亚洲精品一区二区三区99| 一区二区三区在线免费| 国产剧情在线观看一区二区| 欧美视频自拍偷拍| 中文字幕一区二区视频| 老司机精品视频在线|