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

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

?? chttpdatams.cpp

?? 此程序為wcdma系統當中ftp/video業務模型的c++程序仿真 通過此程序 能得到此兩種業務在多種條件下的吞吐量和無碼率的性能
?? CPP
字號:
#include"CHttpDataMs.h"
#include "CMsManager.h"
#include<fstream.h>




//***********以下為pulic中的函數的具體實現****************

void CHttpDataMs::HttpInitialization()                  //Http初始化函數

//初始化業務模型,完成一個packet call的設置
{
          
	m_fMeanOfHttpMainObjectSize=float(8.35);	   //主對象大小服從對數正態分布的均值
	m_fStdOfHttpMainObjectSize=float(1.37);	   //主對象大小服從對數正態分布的方差
	m_iHttpMaxMainObjectSize=2000000;		   //主對象大小的最大值,單位:byte
	m_iHttpMinMainObjectSize=100;		   //主對象大小的最小值,單位:byte
	m_iHttpMainObjectSize=0;			   //PacketCall中主對象的大小


	m_fMeanOfHttpPlugInSize=float(6.17);	 //內嵌對象大小服從對數正態分布的均值
	m_fStdOfHttpPlugInSize=float(2.36);	 //內嵌對象大小服從對數正態分布的方差
	m_iHttpMaxPlugInSize=2000000;			//內嵌對象大小的最大值,單位:byte
	m_iHttpMinPlugInSize=50;				//內嵌對象大小的最小值,單位:byte
	m_iHttpPlugInSize=0;					//PacketCall中內嵌對象的大小


	m_fAlphaOfHttpPlugInNumInPacketCall=float(1.1);	//PacketCall中內嵌對象數目服從的pareto分布的參數alpha
	m_fKOfHttpPlugInNumInPacketCall=2;				//PacketCall中內嵌對象數目服從的pareto分布的參數k
	m_iMaxOfHttpPlugInNumInPacketCall=55;				//PacketCall中內嵌對象的最大數目
	m_iHttpPlugInNumInPacketCall=0;					//每一個PacketCall中內嵌對象的數目

	m_iPlugInTotalSize=0;


	m_iMeanOfHttpReadingTime=30;						//閱讀時間服從指數分布的均值,單位:s	
	m_iHttpReadingTime=0;								//閱讀時間置0;


	m_fMeanOfHttpMainObjectParsingTime=float(0.13);	//主頁的解析時間服從指數分布的均值,單位:s	
	m_iHttpMainObjectParsingTime=0;					//主頁的解析時間置0;

	
	m_bIsHttpPacketCallOver=true;			        //判斷閱讀時間是否結束;

	m_iCurrentSlotNum=0;
	m_PacketMTU=1500*8;

	m_bIsInPacketCall=false;      //必須初始化這幾個變量為
	m_bIsInMainObject=false;      //后面Packet Process利用;
	m_bIsInPlugIn=false;        

	m_enTrafficType = HTTP;			//初始化數據移動臺業務類型為HTTP

}




int CHttpDataMs::HttpMainObjectSizeGenerator()     //主對象大小生成函數;
{
     //基本思想:主對象大小服從截短的對數正態分布,生成主對象大小(bytes),然后化為bit    

	m_iHttpMainObjectSize=(int)xLognormal(m_fMeanOfHttpMainObjectSize,m_fStdOfHttpMainObjectSize,
	float(m_iHttpMaxMainObjectSize),float(m_iHttpMinMainObjectSize));		//單位:byte

	if((m_iHttpMainObjectSize>=m_iHttpMaxMainObjectSize)||(m_iHttpMainObjectSize<=m_iHttpMinMainObjectSize))
	{
		HttpMainObjectSizeGenerator();
	}

	m_iHttpMainObjectSize=m_iHttpMainObjectSize*8;			//單位:bit

	return m_iHttpMainObjectSize;

}






int CHttpDataMs::HttpPlugInSizeGenerator()    //內嵌對象大小生成函數;
{

   //基本思想:內嵌對象大小服從截短的對數正態分布,生成主對象大小(bytes),然后化為bit
   
   
	m_iHttpPlugInSize=(int)xLognormal(m_fMeanOfHttpPlugInSize,m_fStdOfHttpPlugInSize,
		float(m_iHttpMaxPlugInSize),float(m_iHttpMinPlugInSize));		//單位:byte
	
	if((m_iHttpPlugInSize>=m_iHttpMaxPlugInSize)||(m_iHttpPlugInSize<=m_iHttpMinPlugInSize))
	{
		HttpPlugInSizeGenerator();
	}

	m_iHttpPlugInSize=m_iHttpPlugInSize*8;			//單位:bit

	return m_iHttpPlugInSize;
}





int CHttpDataMs::HttpPlugInNumInPacketCallGenerator()	//一個PacketCall中內嵌對象的數目生成函數
{
//基本思想:一個PacketCall中內嵌對象數目服從截短的pareto分布,生成一個PacketCall中內嵌對象的數目
//實現如下:

	m_iHttpPlugInNumInPacketCall=xPareto(m_fAlphaOfHttpPlugInNumInPacketCall,
	m_fKOfHttpPlugInNumInPacketCall,m_iMaxOfHttpPlugInNumInPacketCall);

	m_iHttpPlugInNumInPacketCall-=2;        //  ???????為什么要減去2???????

	if(m_iHttpPlugInNumInPacketCall>=m_iMaxOfHttpPlugInNumInPacketCall)
	{
		HttpPlugInNumInPacketCallGenerator();
	}

	if(m_iHttpPlugInNumInPacketCall<0)
		m_iHttpPlugInNumInPacketCall=0;
	return m_iHttpPlugInNumInPacketCall;
}



int CHttpDataMs::HttpReadingTimeGenerator()						//閱讀時間生成函數
{
//基本思想:閱讀時間服從指數分布,最后將單位化為時隙(slot)
//實現如下:

	m_iHttpReadingTime=int((xExponent((float)m_iMeanOfHttpReadingTime))/SlotSize);	//單位:slot
	return m_iHttpReadingTime;
}




int CHttpDataMs::HttpMainObjectParsingTimeGenerator()				//主頁解析時間生成函數
{
//基本思想:主頁解析時間服從指數分布,最后將單位化為時隙(slot)
//實現如下:

	m_iHttpMainObjectParsingTime=int(xExponent(m_fMeanOfHttpMainObjectParsingTime)/SlotSize);
	return  m_iHttpMainObjectParsingTime;																			//單位:slot
}



void  CHttpDataMs::PacketGenerator()                              //packet生成函數;
{
   //基本思想:向數據隊列中加入一個packet的數據量,同時生成新的packet時間間隔;此外還要記錄packet到達消息;

	if(m_iPacketNumInPacketCall<=m_iPacketNumGenerated)
	{
      return;
	}

	m_iPacketNumGenerated++;		//已經產生的packet個數數量加一;
	PACKETARRIVALMESSAGE_TYPE *pHttpNewPacketArrivalMessage=new PACKETARRIVALMESSAGE_TYPE;

	if(m_bIsInMainObject==true)          //要注意m_bIsInMainObject和m_bIsInPlugIn在任何時候取值都是互斥的;
	{
   		pHttpNewPacketArrivalMessage->iObjectIndicator=MAINOBJECT;       //對象指示器設為MAINOBJECT表示此packet來自主對象;        
		pHttpNewPacketArrivalMessage->iTimeOfGeneratePacket=m_iCurrentSlotNum;//記錄packet生成時隙;
		if(m_iHttpMainObjectSize<m_PacketMTU)
			pHttpNewPacketArrivalMessage->iGeneratedPacketSize=m_iHttpMainObjectSize;
		else
		pHttpNewPacketArrivalMessage->iGeneratedPacketSize=m_PacketMTU;   //產生packet的大小;
		pHttpNewPacketArrivalMessage->bIsPacketCallEnd=IsHttpPacketCallOver();//表示此packet是否是其所屬pc的最后一個packet;    
		        
   	}   
	if(m_bIsInPlugIn==true)
	{
      	pHttpNewPacketArrivalMessage->iObjectIndicator=PLAGIN;       //對象指示器設為PLAGIN表示此packet來自從對象;        
		pHttpNewPacketArrivalMessage->iTimeOfGeneratePacket=m_iCurrentSlotNum;
		if(m_iPlugInTotalSize<m_PacketMTU)
			pHttpNewPacketArrivalMessage->iGeneratedPacketSize=m_iPlugInTotalSize;
		else
		pHttpNewPacketArrivalMessage->iGeneratedPacketSize=m_PacketMTU;  
		pHttpNewPacketArrivalMessage->bIsPacketCallEnd=IsHttpPacketCallOver();

	}
	pHttpNewPacketArrivalMessage->iPacketIndex=m_iPacketNumGenerated;
	pHttpNewPacketArrivalMessage->bIsSucfulTrans=true;
	pHttpNewPacketArrivalMessage->iPacketSize=pHttpNewPacketArrivalMessage->iGeneratedPacketSize;
	m_PacketArrivalMsgList.AddTail(pHttpNewPacketArrivalMessage);


	m_iPacketSize=pHttpNewPacketArrivalMessage->iGeneratedPacketSize;
	m_lDataQueueSize+=pHttpNewPacketArrivalMessage->iPacketSize;
	PacketIntervalGenerator();
    
		
	//////////////////////////////////////////////////////


}





void CHttpDataMs::PacketIntervalGenerator()
//產生packet 的時間間隔
{
    //packet 的間隔時間服從Geometry 分布,而Geometry已經在隨機函數庫中被定義為一個類,
    //所以可以通過下面的語句實現void PacketIntervalGenerator()             
              
    //取幾何分布的隨機數賦值給m_iPacketBeforeNextPacket, 單位:slot 
 
    m_iTimeBeforeNextPacket=xGeometry((float)(1.0/5));
	
        //6.0就是根據以上的那個PacketIntervalCalculate()里的公式直接計算出來的結果。
	//單位:slot

}



//***********************************************************************
bool CHttpDataMs::IsHttpPacketCallOver()					//判斷PacketCall是否結束
{
//基本思想:
	 //比較packet call中的分組數m_iPacketNumInPacketCall與已經生成的分組數m_iPacketGeneratedNum, 
     //若相等,把m_bIsInPacketCall置為假,并生成packetcall間隔時間
     // -----利用函數void PacketCallIntervalGenerator()----
     //具體實現程序如下:
      if(m_iPacketNumInPacketCall<=m_iPacketNumGenerated)
      {
          m_bIsInPacketCall=false;
          return  true;         //表示packet call生成結束
      }
      else
      {
          m_bIsInPacketCall=true;
          return  false;     //表示packet call生成尚未結束
      }
}



void CHttpDataMs::HttpNewPacketCallSetup()        //新建Packet call函數
{
   //基本思想:先生成主對象,再生成從對象數量和大小,最后得到packet call大小;此外,還要記錄此packet call的到達時隙;


	m_iHttpMainObjectSize=HttpMainObjectSizeGenerator();  //產生主對象大小
	 ///////////////////////////////////////////////
	m_iHttpPlugInNumInPacketCall=HttpPlugInNumInPacketCallGenerator();     //產生從對象數目;
	 ///////////////////////////////////////////////
	for(int i=0;i<m_iHttpPlugInNumInPacketCall;i++)
        m_iPlugInTotalSize+=HttpPlugInSizeGenerator();     //累加從對象的大小;

     m_iHttpPacketCallSize=m_iHttpMainObjectSize+m_iPlugInTotalSize;  //當前packet call的大小;
      
	///////////記錄閱讀時間;
     m_iHttpReadingTime=HttpReadingTimeGenerator();         //重新設置閱讀時間;
	//////////////////////////////////

	PACKETCALLARRIVALMESSAGE_TYPE *pHttpNewPacketCallArrivalMessage=new  PACKETCALLARRIVALMESSAGE_TYPE;

    pHttpNewPacketCallArrivalMessage->iTimeOfPCArrival=m_iCurrentSlotNum;  //設置packet call到達消息;
    pHttpNewPacketCallArrivalMessage->lDataBitsOfPC=m_iHttpPacketCallSize;
	pHttpNewPacketCallArrivalMessage->iMainObjectSize=m_iHttpMainObjectSize;
	pHttpNewPacketCallArrivalMessage->lSucfulBitNum=0;
	pHttpNewPacketCallArrivalMessage->bIsMOSucfulTrans=true;
    m_PacketCallArrivalMsgList.AddTail(pHttpNewPacketCallArrivalMessage);
   
	///////////////////////////////////////////////////////////

	//根據packetcall 數據量和packet的大小計算出packet的數量
	if((m_iHttpPacketCallSize%m_PacketMTU)==0)      
        m_iPacketNumInPacketCall=m_iHttpPacketCallSize/m_PacketMTU;
	else 
		m_iPacketNumInPacketCall=m_iHttpPacketCallSize/m_PacketMTU+1;

    
	m_iPacketNumGenerated=0;			//初始化每個PacketCall已經產生的packet個數為0;
    m_bIsInMainObject=true;
    m_bIsInPlugIn=false;
}



void CHttpDataMs::HttpPacketCallProcess()
{
	m_iCurrentSlotNum=m_pMsManager->m_iSlotCurrentNum;
   if(m_bIsInPacketCall==true)         //m_bIsInPacketcall==true初始化為false;
	{
     if(m_bIsInMainObject==true)       //m_bIsInMaibObject初始化為false;
	 {
	    if(m_iTimeBeforeNextPacket<=0)  //如果packet時間到時;
		{
		     PacketGenerator();
		     m_iHttpMainObjectSize-=m_iPacketSize;//主對象減去一個packet
		}	
		else
		{
             m_iTimeBeforeNextPacket--;
		}
		if(m_iHttpMainObjectSize<=0)      //如果主對象傳輸完畢;
		{
		     m_bIsInMainObject=false;
			 m_iHttpMainObjectParsingTime=HttpMainObjectParsingTimeGenerator();//初始化解析時間;
		}
	}  
     else
	 {
	  if(m_iHttpMainObjectParsingTime<=0)    //如果解析時間到時;
		{
		 if(m_bIsInPlugIn==true)
		 {  
            if(m_iTimeBeforeNextPacket<=0)
			{
			  PacketGenerator();
              m_iPlugInTotalSize-=m_iPacketSize;//總共的內嵌對象大小減去一個packet;
			} 
		    else
			{
			  m_iTimeBeforeNextPacket--;
			}  	
		 
		} 	 
		 
		} 		 
	  else
		{
		     m_iHttpMainObjectParsingTime--; 
		     if(m_iHttpMainObjectParsingTime<=0)
				 m_bIsInPlugIn=true;
		} 
	  if(m_iPlugInTotalSize<=0)      //如果內嵌對象傳輸完畢;
           
		{
             m_bIsInPlugIn=false;
             m_bIsInPacketCall=false;
		}              
	        
	} 	 
	 
	}
   else
	{
       m_iHttpReadingTime--; 
	   if(m_iHttpReadingTime<=0)   //判斷閱讀時間是否到時;
		{
	      HttpNewPacketCallSetup();          //新建一個packet call;
		  m_bIsInPacketCall=true;
          m_bIsInMainObject=true;
          m_bIsInPlugIn=false;
          m_iTimeBeforeNextPacket=0;
		}   
	}   
}

//*********************來自基類CDataMs純虛函數的實現******************************
////填充數據隊列函數
void CHttpDataMs::FillDataQueue()
{
	HttpPacketCallProcess();
}

////數據移動臺業務初始化函數
void CHttpDataMs::DataMsTrafficInitialize()
{
	HttpInitialization();
}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
国产一区二区不卡| 亚洲地区一二三色| 精品国产一区二区三区久久影院| 欧美三级中文字幕| 精品剧情在线观看| 欧美日韩美少妇| 欧美一区二区三区精品| 欧美一级二级在线观看| 精品久久久久久久久久久久久久久 | 欧美日韩国产综合久久| 91精品国产综合久久香蕉麻豆| 欧美日韩国产在线观看| 精品久久久久久久久久久久包黑料 | 91浏览器在线视频| 91精品福利在线| 99久久久无码国产精品| 欧美吞精做爰啪啪高潮| 日韩视频123| 国产精品免费久久| 亚洲国产aⅴ天堂久久| 精品亚洲免费视频| 色婷婷综合在线| 日韩欧美一级在线播放| 国产精品污污网站在线观看| 亚洲综合色区另类av| 久色婷婷小香蕉久久| 99在线精品观看| 91精品国产色综合久久不卡电影| 久久久噜噜噜久久人人看 | 青青国产91久久久久久| 国产91丝袜在线观看| 欧美在线观看视频一区二区| 欧美一区二区美女| 国产精品成人网| 中文字幕日韩精品一区| 尤物在线观看一区| 国产成人免费高清| 91精品视频网| 中文字幕一区二区在线播放| 日本不卡在线视频| 91麻豆精品视频| 久久综合五月天婷婷伊人| 亚洲欧美一区二区视频| 激情五月播播久久久精品| 91成人看片片| 久久夜色精品一区| 香蕉成人伊视频在线观看| 欧美视频在线不卡| 国产精品欧美一级免费| 久久99久久久欧美国产| 在线播放中文一区| 一区二区不卡在线播放| 97久久精品人人做人人爽50路| 精品欧美一区二区久久| 日韩国产欧美三级| 91久久精品国产91性色tv| 国产精品久99| 国产福利91精品一区二区三区| 在线综合亚洲欧美在线视频| 夜夜爽夜夜爽精品视频| 一本大道久久a久久精二百| 亚洲国产精品国自产拍av| 激情综合一区二区三区| 欧美tickling挠脚心丨vk| 日韩精彩视频在线观看| 欧美日本国产视频| 天堂久久久久va久久久久| 欧美日韩极品在线观看一区| 丝袜美腿亚洲综合| 91精品欧美综合在线观看最新 | 日韩理论片网站| 成人免费高清在线| 国产精品毛片高清在线完整版| 国产成人精品免费| 国产精品久久国产精麻豆99网站| 成人午夜伦理影院| 欧美白人最猛性xxxxx69交| 日本美女一区二区| 91精品国产91综合久久蜜臀| 免费成人av在线| 精品国一区二区三区| 国产一区视频在线看| 欧美日韩一级片网站| 亚洲精品精品亚洲| 欧美色综合网站| 免费的成人av| 国产日韩欧美a| 91免费国产在线观看| 爽爽淫人综合网网站| 精品国产sm最大网站| 国产乱码精品一区二区三区忘忧草| 国产拍揄自揄精品视频麻豆| 99久久精品免费| 午夜国产精品影院在线观看| 精品美女一区二区三区| 成人一道本在线| 五月天国产精品| 国产婷婷色一区二区三区| 色噜噜狠狠成人中文综合| 天天色天天操综合| 国产亚洲精品精华液| 色婷婷一区二区三区四区| 麻豆国产欧美一区二区三区| 中文字幕精品综合| 欧美精品久久天天躁| 国产精品18久久久久| 亚洲综合在线五月| 久久久99精品久久| 91超碰这里只有精品国产| 国产成人免费av在线| 日韩电影在线观看网站| 一区免费观看视频| 精品国产乱码久久久久久老虎| 91网站在线观看视频| 日韩va亚洲va欧美va久久| 国产精品久久久久久久蜜臀| 日韩女优毛片在线| 在线精品国精品国产尤物884a | 亚洲综合成人网| 日韩区在线观看| 欧美在线999| 成人精品高清在线| 另类中文字幕网| 午夜在线成人av| 亚洲狠狠丁香婷婷综合久久久| 久久午夜色播影院免费高清| 日本精品视频一区二区| 成人精品视频网站| 国产在线一区观看| 久久99久久99| 免费一级欧美片在线观看| 亚洲最大成人综合| 综合欧美亚洲日本| 国产精品理伦片| 一区二区三区高清| 国产精品久久久久久亚洲毛片| 精品999久久久| 精品欧美乱码久久久久久1区2区| 51精品视频一区二区三区| 91久久国产综合久久| 色香色香欲天天天影视综合网| 成人福利视频在线看| 成人性生交大片免费看在线播放| 国产一区二区三区av电影| 国产在线精品免费| 国产乱码字幕精品高清av | 国产精品一二三在| 国产精品一区二区久久精品爱涩 | 欧美激情在线一区二区三区| 精品久久久久一区| 欧美精品一区二区三区一线天视频| 欧美一卡二卡三卡| 欧美videos大乳护士334| 久久这里只有精品首页| 久久久久久电影| 国产精品视频看| 亚洲日本在线a| 亚洲综合精品自拍| 日韩电影网1区2区| 国产一区二区影院| 成人av网址在线观看| 在线一区二区三区| 欧美精品色综合| 欧美精品一区二区三区久久久| 久久久精品天堂| 18成人在线视频| 午夜a成v人精品| 黄色资源网久久资源365| 成人高清免费观看| 欧洲一区在线电影| 精品久久久久一区| 自拍偷拍亚洲激情| 蜜桃视频在线观看一区| 国产精品一区一区三区| 日本精品一区二区三区高清 | 成人教育av在线| 在线观看一区二区精品视频| 在线成人av影院| 国产精品成人一区二区艾草 | 天天亚洲美女在线视频| 韩日精品视频一区| 色综合久久精品| 这里只有精品免费| 国产精品美女视频| 亚洲一区二区三区在线看| 狠狠色丁香九九婷婷综合五月| 99精品欧美一区| 精品99999| 亚洲国产精品久久艾草纯爱| 国产在线一区二区| 欧美色精品天天在线观看视频| 26uuu精品一区二区在线观看| 亚洲天堂av一区| 国产一区二区三区最好精华液| 国产精品123区| 欧美一级在线免费| 一区二区三区在线观看网站| 日本sm残虐另类| 在线国产亚洲欧美| 亚洲国产精品精华液ab|