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

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

?? protocol.cpp

?? 中間件編程,該程序用于傳輸客戶端數據到服務器,可運行于WINDOWS2000,2003,XP,98等系統
?? CPP
?? 第 1 頁 / 共 2 頁
字號:
			Delete=TRUE;
		}	
	}
	if(!Delete&&!m_CriticalData.IsEmpty()){
		if(CurData==m_CriticalData.GetHead()){
			delete m_CriticalData.RemoveHead();
			Delete=TRUE;
		}	
	}		            
	if(!Delete&&(!m_CriticalReplyData.IsEmpty())){
		if(CurData==m_CriticalReplyData.GetHead()){
			delete m_CriticalReplyData.RemoveHead();
			Delete=TRUE;
		}	
	}		            
	
	if(!Delete&&(!m_NonCriticalData.IsEmpty())){
		if(CurData==m_NonCriticalData.GetHead()){
			delete m_NonCriticalData.RemoveHead();
			Delete=TRUE;
		}	
	}	
              
	if(!Delete){              
		ASSERT(Delete);
	}	
  }
  else{
	CCenterData* CurData = (CCenterData*) Data;
	BOOL Delete=FALSE;
	if(!m_CenCriticalData.IsEmpty()){
		if(!strcmp(CurData->sn,m_CenCriticalData.GetHead()->sn)){
			delete m_CenCriticalData.RemoveHead();
			Delete=TRUE;
		}	
	}		            
	if(!Delete&&(!m_CenCriticalReplyData.IsEmpty())){
		if(!strcmp(CurData->sn,m_CenCriticalReplyData.GetHead()->sn)){
			delete m_CenCriticalReplyData.RemoveHead();
			Delete=TRUE;
		}	
	}		            
	
	if(!Delete&&(!m_CenNonCriticalData.IsEmpty())){
		if(!strcmp(CurData->sn,m_CenNonCriticalData.GetHead()->sn)){
			delete m_CenNonCriticalData.RemoveHead();
			Delete=TRUE;
		}	
	}	
              
	if(!Delete){              
		ASSERT(Delete);
	}	
  }
}

void CCSEntity::OnReceive(const void *InPacket,WORD InPacketLen)
{
  if(m_Flag==1)
  {
	CCServiceData *tmpServiceData=new CCServiceData;                                 
	tmpServiceData->ReceivePDU(InPacket,InPacketLen);
	
	if(m_CurData==NULL){
		delete tmpServiceData;
		return;
	}
	if(tmpServiceData->IsDuplicated()){
//not a duplicated reply of current PDU data,discard it	
		if(!(CCServiceData *)m_CurData->IsReply(tmpServiceData)){
			delete tmpServiceData;
			return;                             
		}	
	}
//copy input data 	
	m_CurData->GetInputData(tmpServiceData);
	delete tmpServiceData;

//kill the timeout timer
	KillTimer(m_SendTimerId);

#ifdef _LOGDATA
	char *LogStr=new char[300];
	m_CurData->GetReceiveLogString(LogStr);
	((CClientApp *)AfxGetApp())->AddLog(LogStr);
	delete []LogStr;
#endif
	if(m_CurData->IsReply()){		
		void *User;		       
		if(m_UserList.Lookup(m_CurData->GetUserId(),User)){
			((CCSUser *)User)->OnReply(m_CurData->GetSequenceNumber(),m_CurData->GetReplyPDU(),
				m_CurData->GetReplyPDULen(),m_CurData->GetTimeSpan());
		}                        
	}
    
	char *tmpbuf = (char*)m_CurData->m_OutBuffer;
	
	if((tmpbuf[1]=='A')&&(tmpbuf[2]=='I'))
	{
	     m_State=Entity_File;
		 if(PackedFile(tmpbuf))
		 {
		   m_CurData=NULL;
	       ActiveSend();
	       return;
		 }
	}
	if((tmpbuf[1]=='A')&&(tmpbuf[2]=='P'))
	{
	   if(tmpbuf[23]=='\x31')
	   {
		   RemoveData(m_CurData);
		   m_CurData=NULL;
		   if(m_CriticalData.IsEmpty())
		     m_DiskBuffer->SaveData(&m_CriticalData);
		   if(m_ImageFileData.IsEmpty())
			   m_ImageBuffer->SaveData(&m_ImageFileData);
	       m_State=Entity_Idle;
	       ActiveSend();
		   return;
	   }
	   else{
		   RemoveData(m_CurData);
           m_CurData=NULL;
	       m_State=Entity_File;
	       ActiveSend();
		   return;
	   }
	}

	if(m_CurData->IsReply()&&m_CurData->IsCritical())
	{
	   if((m_State==Entity_File)||(m_State==Entity_File_Timeouting))
	   {
	      RemoveData(m_CurData);
	      m_CurData=NULL;
	      m_State=Entity_File;
	      ActiveSend();
		  return;
	   }
	}
// Remove the data from data buffer,and make the current send buffer pointer NULL
	RemoveData(m_CurData);
	m_CurData=NULL;
		
//if there isn't data in the disk buffer, delete the disk buffer file
	if(m_CriticalData.IsEmpty())
		m_DiskBuffer->SaveData(&m_CriticalData);
		
	m_State=Entity_Idle;
	ActiveSend();
	}//flag ==1 end
	else{
	    CCenterData *tmpCenterData=new CCenterData;                                 
	    tmpCenterData->ReceivePDU(InPacket,InPacketLen);
	
	    if(m_CenData==NULL){
		   delete tmpCenterData;
		   return;
		}
		if(atoi(tmpCenterData->packettype)==1)
		{
	       if(tmpCenterData->IsDuplicated()){
			   if(!(CCenterData *)m_CenData->IsReply(tmpCenterData)){
			     delete tmpCenterData;
				 return;
			   }                             
		   }
		   tmpCenterData->packettype[0]='0';
		   tmpCenterData->packettype[1]='0';
		   m_CenData->GetInputData(tmpCenterData);
	       delete tmpCenterData;
	       KillTimer(m_SendTimerId);
	       RemoveData(m_CenData);
	       m_CenData=NULL;
	       if(m_CenCriticalData.IsEmpty())
		     m_CentBuffer->SaveData(&m_CenCriticalData);
	       m_State=Entity_Idle;
	       ActiveSend();
		}
	}
}

int CCSEntity::PackedFile(char* buffer)
{
  ASSERT(m_ImageFileData.IsEmpty());
  char *p = (char*)m_CriticalData.GetHead()->m_OutBuffer;
  if(strcmp(buffer,p))
	  return 0;
  char buf[LINELEN],packet[LINELEN*2+50],tmpbuf[3];
  char flag;
  FILE *fp;
  int cc=0;
  char filename[50];
  char protocol[30];
  BYTE b_buf[LINELEN];
  memset(filename,'\0',sizeof(filename));
  memset(protocol,'\0',sizeof(protocol));
  memcpy(filename,buffer+19,strlen(buffer)-19-1);
  memcpy(protocol,buffer,17);
  protocol[2]='P';
  fp=fopen(filename,"r+b");
  if(fp==NULL)
	  return 0;
  int count = 0;
  do{
		memset(buf,'\0',sizeof(buf));
		cc=read(fp->_file ,buf,LINELEN);
		int bb = strlen(buf);
		if(cc==LINELEN)
			flag='\x30';
		else flag='\x31';
		count++;
		int i =0;
		bufinfo.Empty();
		while(i<cc)
		{
			b_buf[i]=(int)buf[i];
			sprintf(tmpbuf,"%02x",b_buf[i]);
            bufinfo+=tmpbuf;
			i++;
		}
        cc = bufinfo.GetLength();
		sprintf(packet,"%s%03d%03d%1c%s}",protocol,count,cc,flag,bufinfo);
		CCServiceData *ServiceData=
		new CCServiceData(packet,cc+25,1,TRUE,FALSE,1000);
	    ServiceData->SetSequenceNumber(m_SequenceNum.Get());
		m_ImageFileData.AddTail(ServiceData);
  }while(cc/2==LINELEN);
  fclose(fp);
  m_ImageBuffer->SaveData(&m_ImageFileData);
  if(!strcmp(buffer,(char*)m_CriticalData.GetHead()->m_OutBuffer))
     delete m_CriticalData.RemoveHead();
  return 1;
}

void CCSEntity::ActiveSend()
{                 
  ASSERT(m_State==Entity_Idle||m_State==Entity_Timeouting||m_State==Entity_File||m_State==Entity_File_Timeouting);
  if(m_Flag == 1)
  {
	if(m_State==Entity_File)
	{
	   if(m_ImageFileData.IsEmpty())
	   {
	      m_State=Entity_Idle;
		  ActiveSend();
	   }
	   if(!m_CriticalReplyData.IsEmpty())
		   m_CurData=m_CriticalReplyData.GetHead();
       else if(!m_ImageFileData.IsEmpty())
		   m_CurData=m_ImageFileData.GetHead();
	   if(m_CurData==NULL)
	      return;
	   if(SendToSock(m_CurData)==FALSE){
			#ifdef _DEBUG
		 		AfxMessageBox("SendToSock failed!");
			#endif
		}
	   m_State=Entity_File_Timeouting;
	   m_SendTimerId=SetTimer(m_SendTimerEvent,m_CurData->m_TimeOutInterval,NULL);
	   return;
	}

	if(m_State==Entity_File_Timeouting)
	{
		if((m_CurData->IsReply())&&(m_CurData->m_RetryCounter==3)){
			m_CurData->m_ReplyTime=CTime::GetCurrentTime();
			void *User;
			if(m_CurData->IsCritical())
				if(m_UserList.Lookup(m_CurData->GetUserId(),User)){
					((CCSUser *)User)->OnReply(m_CurData->GetSequenceNumber(),NULL,0,m_CurData->GetTimeSpan(),SENDTIMEOUT);
				}
				RemoveData(m_CurData);
			//start send next data	
				m_CurData=NULL;  
				m_State=Entity_File;
				ActiveSend();
				return;
		}                         
		//send current data again  
		if(!m_CriticalReplyData.IsEmpty()&&(m_CurData!=m_CriticalReplyData.GetHead())){
			m_CurData->m_RetryCounter=0;
			m_CurData=NULL;
			m_State=Entity_File;
			ActiveSend();
		}
		else{
			m_CurData->m_RetryCounter++; 
			if(SendToSock(m_CurData)==FALSE){                                                        
				#ifdef _DEBUG
		 			AfxMessageBox("SendToSock failed!");
				#endif					
            }           
//			SendToSock(m_CurData);	            
			m_SendTimerId=SetTimer(m_SendTimerEvent,m_CurData->m_TimeOutInterval,NULL);                    
		}
	    return;
	}

////////////////////////////////////////////////////////

	if(m_State==Entity_Idle){ 
		ASSERT(m_CurData==NULL); 
		if(!m_CriticalReplyData.IsEmpty())
			m_CurData=m_CriticalReplyData.GetHead();
		else if(!m_CriticalData.IsEmpty())
			m_CurData=m_CriticalData.GetHead();
		else if(!m_NonCriticalData.IsEmpty())
			m_CurData=m_NonCriticalData.GetHead();	
		if(m_CurData==NULL)
			return;	
		if(SendToSock(m_CurData)==FALSE){
			#ifdef _DEBUG
		 		AfxMessageBox("SendToSock failed!");
			#endif					
		}   
 //       SendToSock(m_CurData);
        
    #ifdef _LOGDATA
		char *LogStr=new char[300];
		m_CurData->GetSendLogString(LogStr);
		((CClientApp *)AfxGetApp())->AddLog(LogStr);
		delete []LogStr;
	#endif
	//change the entity's state	                    
		m_State=Entity_Sending;
		
		m_SendTimerId=SetTimer(m_SendTimerEvent,m_CurData->m_TimeOutInterval,NULL);                    
		return;	
	}	                                           
	
	if(m_State==Entity_Timeouting){		                    
		//if time out, remove all data from noncritical data buffer	
		if(!m_NonCriticalData.IsEmpty()){
		    if(m_CurData==m_NonCriticalData.GetHead())
		    	m_CurData=NULL;
		    while(!m_NonCriticalData.IsEmpty())	
				delete m_NonCriticalData.RemoveHead();				                           
			if(m_CurData==NULL){	
				m_State=Entity_Idle;
				ActiveSend();       
				return;
			}
		}	
			
		if((m_CurData->IsReply())&&(m_CurData->m_RetryCounter==3)){
			m_CurData->m_ReplyTime=CTime::GetCurrentTime();
			void *User;
			if(m_CurData->IsCritical())
				if(m_UserList.Lookup(m_CurData->GetUserId(),User)){
					((CCSUser *)User)->OnReply(m_CurData->GetSequenceNumber(),NULL,0,m_CurData->GetTimeSpan(),SENDTIMEOUT);
				}
				RemoveData(m_CurData);
			//start send next data	
				m_CurData=NULL;  
				m_State=Entity_Idle;
				ActiveSend();
				return;
		}                         
		//send current data again  
		if(!m_CriticalReplyData.IsEmpty()&&(m_CurData!=m_CriticalReplyData.GetHead())){
			m_CurData->m_RetryCounter=0;
			m_CurData=NULL;
			m_State=Entity_Idle;
			ActiveSend();
		}
		else{
			m_CurData->m_RetryCounter++; 
			if(SendToSock(m_CurData)==FALSE){                                                        
				#ifdef _DEBUG
		 			AfxMessageBox("SendToSock failed!");
				#endif					
            }           
//			SendToSock(m_CurData);	            
			m_SendTimerId=SetTimer(m_SendTimerEvent,m_CurData->m_TimeOutInterval,NULL);                    
		}
	}
	return;
	}
	else{
//////////////////////////////////////////////////////// center entity

	if(m_State==Entity_Idle){ 
		ASSERT(m_CenData==NULL); 
		if(!m_CenCriticalReplyData.IsEmpty())
			m_CenData=m_CenCriticalReplyData.GetHead();
		else if(!m_CenCriticalData.IsEmpty())
			m_CenData=m_CenCriticalData.GetHead();
		else if(!m_CenNonCriticalData.IsEmpty())
			m_CenData=m_CenNonCriticalData.GetHead();	
		if(m_CenData==NULL)
			return;	
		if(SendToSock(m_CenData)==FALSE){
			#ifdef _DEBUG
		 		AfxMessageBox("SendToSock failed!");
			#endif					
		}   
	//change the entity's state	                    
		m_State=Entity_Sending;
		
		m_SendTimerId=SetTimer(m_SendTimerEvent,m_CenData->m_TimeOutInterval,NULL);                    
		return;	
	}
	if(m_State==Entity_Timeouting){		                    
		//if time out, remove all data from noncritical data buffer	
		if(!m_CenNonCriticalData.IsEmpty()){
		    if(m_CenData==m_CenNonCriticalData.GetHead())
		    	m_CenData=NULL;
		    while(!m_CenNonCriticalData.IsEmpty())	
				delete m_CenNonCriticalData.RemoveHead();				                           
			if(m_CenData==NULL){	
				m_State=Entity_Idle;
				ActiveSend();       
				return;
			}
		}	
			
		if((m_CenData->IsReply())&&(m_CenData->m_RetryCounter==3)){
			m_CenData->m_ReplyTime=CTime::GetCurrentTime();
			void *User;
			if(m_CenData->IsCritical())
				if(m_UserList.Lookup(m_CenData->GetUserId(),User)){
					((CCSUser *)User)->OnReply(m_CenData->GetSequenceNumber(),NULL,0,m_CenData->GetTimeSpan(),SENDTIMEOUT);
				}
				RemoveData(m_CenData);
			//start send next data	
				m_CenData=NULL;  
				m_State=Entity_Idle;
				ActiveSend();
				return;
		}                         
		//send current data again  
		if(!m_CenCriticalReplyData.IsEmpty()&&(m_CenData!=m_CenCriticalReplyData.GetHead())){
			//m_CenData->m_RetryCounter=0;
			m_CenData=NULL;
			m_State=Entity_Idle;
			ActiveSend();
		}
		else{
			//m_CenData->m_RetryCounter++; 
			if(SendToSock(m_CenData)==FALSE){                                                        
				#ifdef _DEBUG
		 			AfxMessageBox("SendToSock failed!");
				#endif					
            }           
//			SendToSock(m_CurData);	            
			m_SendTimerId=SetTimer(m_SendTimerEvent,m_CenData->m_TimeOutInterval,NULL);                    
		}
	}
	return;
	}//end of flag == 2
}

void CCSEntity::OnTimer(UINT nIDEvent)
{
  if(m_Flag == 1)
  {
//for debug only
	if(nIDEvent==m_SendTimerEvent){
		KillTimer(m_SendTimerId);
		if((m_State!=Entity_Sending)&&(m_State!=Entity_Timeouting)&&(m_State!=Entity_File)&&(m_State!=Entity_File_Timeouting))
			return;
		if(m_State==Entity_Sending){
			m_State=Entity_Timeouting;
//if this is the first time timeout, save data to diskbuf			
			m_DiskBuffer->SaveData(&m_CriticalData);
			ActiveSend();
		}
		else if(m_State==Entity_Timeouting)
		{
			AdjustInterval();     //adjust the timeout interval
			ActiveSend();
		}
		else if(m_State==Entity_File_Timeouting)
		{
			AdjustInterval();     //adjust the timeout interval
			ActiveSend();
		}
		else if(m_State == Entity_File){
			
			AdjustInterval();     //adjust the timeout interval
			m_State=Entity_File_Timeouting;
			ActiveSend();
		}
	}
  }
  else{
	if(nIDEvent==m_SendTimerEvent){
		KillTimer(m_SendTimerId);
		if((m_State!=Entity_Sending)&&(m_State!=Entity_Timeouting))
			return;
		if(m_State==Entity_Sending){
			m_State=Entity_Timeouting;
//if this is the first time timeout, save data to diskbuf			
			m_CentBuffer->SaveData(&m_CenCriticalData);
            //InsertToDatabase(&m_DbId,&m_CenCriticalData);	
			ActiveSend();
		}
		else if(m_State==Entity_Timeouting)
		{
			AdjustInterval();     //adjust the timeout interval
			ActiveSend();
		}                           
	} 

  }//flag==2
	
	CFrameWnd::OnTimer(nIDEvent);
}

void CCSEntity::AdjustInterval()
{
}

//lane data
void CCSEntity::SetLaneData(int LaneNo,int TollHouse,int flag,const char *Descrip)
{
	m_LaneNo=LaneNo;
	m_TollHouse=TollHouse;
	if(Descrip!=NULL)
		m_TollHouseDescripion=Descrip; 
	ASSERT(m_DiskBuffer);
	if(flag==1)
	{
	   m_DiskBuffer->SetFileHeader(LaneNo,TollHouse,m_TollHouseDescripion);
       m_ImageBuffer->SetFileHeader(LaneNo,TollHouse,m_TollHouseDescripion);	
	}
	else m_CentBuffer->SetFileHeader(LaneNo,TollHouse,m_TollHouseDescripion);	
}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
亚洲成人精品在线观看| 国产精品影视天天线| 国产做a爰片久久毛片| 色婷婷久久综合| 国产亚洲女人久久久久毛片| 一区二区免费看| 国产.欧美.日韩| 日韩视频免费观看高清完整版 | 一区二区三区自拍| 国内精品久久久久影院一蜜桃| 色欧美片视频在线观看| 久久五月婷婷丁香社区| 丝袜亚洲另类欧美综合| 日韩精品一区二区在线| 亚洲激情第一区| 成人av在线电影| 国产欧美中文在线| 国产一区二区三区电影在线观看 | 欧美一级欧美三级| 亚洲精品老司机| 波多野结衣中文字幕一区二区三区| 日韩一区二区三区免费看| 一区二区三区日韩欧美| www.欧美色图| 国产精品高潮久久久久无| 黄一区二区三区| 欧美一区二区精品久久911| 亚洲午夜电影在线观看| 欧美日韩综合一区| 亚洲国产日韩精品| 欧美日韩视频在线一区二区 | 另类中文字幕网| 91精品国产麻豆| 天天操天天干天天综合网| 欧洲av在线精品| 亚洲一区二区黄色| 欧美性色黄大片| 三级一区在线视频先锋| 欧美日韩国产精品自在自线| 亚洲成人免费av| 欧美丰满高潮xxxx喷水动漫| 日韩电影一区二区三区四区| 91精品国产综合久久精品| 日韩综合一区二区| 欧美xxxxx牲另类人与| 久久国产精品无码网站| 国产日韩欧美a| www.亚洲激情.com| 夜夜亚洲天天久久| 69堂国产成人免费视频| 激情文学综合网| 中文字幕乱码日本亚洲一区二区 | 色噜噜狠狠一区二区三区果冻| 亚洲另类色综合网站| 精品视频一区二区不卡| 久久97超碰色| 中文字幕制服丝袜成人av| 在线欧美日韩精品| 日韩二区在线观看| 国产女同互慰高潮91漫画| 色视频欧美一区二区三区| 日韩在线a电影| 国产丝袜欧美中文另类| 色爱区综合激月婷婷| 天天操天天色综合| 国产精品视频麻豆| 欧美日韩国产a| 粉嫩一区二区三区在线看| 一区二区三区不卡视频在线观看| 欧美一区二区网站| 国产激情一区二区三区四区| 亚洲精品成人天堂一二三| 欧美一激情一区二区三区| 成人av在线电影| 老汉av免费一区二区三区| 中文字幕亚洲成人| 91超碰这里只有精品国产| 不卡大黄网站免费看| 午夜一区二区三区视频| 久久久久国产精品麻豆ai换脸| 欧美视频在线观看一区| 国产.精品.日韩.另类.中文.在线.播放| 亚洲综合另类小说| 国产精品美女一区二区| 欧美一区二区私人影院日本| 91行情网站电视在线观看高清版| 捆绑变态av一区二区三区| 国产精品资源在线| 午夜精品久久久久久久99樱桃| 亚洲国产精品av| 欧美精品一区二区三区蜜臀 | 大白屁股一区二区视频| 强制捆绑调教一区二区| 亚洲夂夂婷婷色拍ww47| 国产精品免费视频一区| 精品久久一二三区| 欧美一卡二卡在线观看| 日本道色综合久久| 不卡免费追剧大全电视剧网站| 精品亚洲免费视频| 免费人成精品欧美精品| 亚洲成人动漫一区| 亚洲一区二区3| 亚洲欧美激情视频在线观看一区二区三区| 久久女同互慰一区二区三区| 日韩一区二区三| 欧美一区二视频| 日韩午夜小视频| 日韩一级黄色片| 欧美巨大另类极品videosbest| 欧美亚洲免费在线一区| 91久久久免费一区二区| 91老司机福利 在线| eeuss鲁片一区二区三区在线观看 eeuss鲁片一区二区三区在线看 | 国产精品毛片大码女人| 中文在线资源观看网站视频免费不卡| 久久久久久久久久久电影| 久久色在线观看| 久久综合久久综合久久综合| 久久一区二区三区四区| 日本一区二区在线不卡| 亚洲国产成人在线| 国产精品成人网| 亚洲综合成人在线视频| 偷窥少妇高潮呻吟av久久免费| 亚洲午夜精品一区二区三区他趣| 亚洲一区二区三区四区在线观看 | 美日韩一区二区| 精品一二三四在线| 国产91丝袜在线观看| 成人av资源网站| 日本电影亚洲天堂一区| 欧美亚洲一区二区三区四区| 精品视频在线看| 欧美电影免费提供在线观看| 久久久欧美精品sm网站| 国产精品无圣光一区二区| 亚洲天堂av一区| 一区二区三区日韩欧美| 日本欧美一区二区三区| 国产电影一区二区三区| 91丨九色丨蝌蚪富婆spa| 国产精品乱码久久久久久| 亚洲精品综合在线| 婷婷丁香久久五月婷婷| 精彩视频一区二区| 91首页免费视频| 欧美不卡一区二区三区四区| 中文av一区二区| 午夜一区二区三区视频| 国产iv一区二区三区| 欧洲国产伦久久久久久久| 欧美videos大乳护士334| 国产精品成人免费| 美女视频网站黄色亚洲| av福利精品导航| 日韩欧美国产成人一区二区| 国产精品久久毛片| 美女在线视频一区| 99在线视频精品| 精品动漫一区二区三区在线观看| 国产精品久久网站| 麻豆国产精品777777在线| 日本精品免费观看高清观看| 久久亚洲精精品中文字幕早川悠里| 亚洲欧洲精品一区二区三区 | 亚洲国产成人av网| 丰满白嫩尤物一区二区| 日韩一区二区三| 亚洲国产欧美另类丝袜| 国产福利一区二区| 日韩三级高清在线| 亚洲一区二区三区免费视频| 国产成人精品免费在线| 宅男噜噜噜66一区二区66| 亚洲精品网站在线观看| 高清不卡在线观看| 欧美mv和日韩mv国产网站| 亚洲电影中文字幕在线观看| 不卡高清视频专区| 久久久综合视频| 日本成人超碰在线观看| 欧美性受xxxx黑人xyx性爽| 日韩理论片中文av| 成人综合婷婷国产精品久久免费| 日韩午夜激情电影| 首页国产欧美久久| 在线观看欧美黄色| 中文字幕中文在线不卡住| 国产成人综合网| 久久亚洲二区三区| 捆绑紧缚一区二区三区视频| 91精品国产色综合久久 | 又紧又大又爽精品一区二区| 成人免费看视频| 欧美国产成人精品| 成人美女视频在线看| 国产精品天天看| 99re热这里只有精品免费视频| 亚洲国产精品av|