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

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

?? protocol.cpp

?? 中間件編程,該程序用于傳輸客戶端數據到服務器,可運行于WINDOWS2000,2003,XP,98等系統(tǒng)
?? CPP
?? 第 1 頁 / 共 2 頁
字號:
#include "stdafx.h"  
#include "protocol.h"
#include "client.h"
#include <io.h>
CString bufinfo;
BOOL PackFlag=FALSE;
DatabaseID* m_database;
//constructor 
CCSEntity::CCSEntity(UINT LocalPort,UINT RemotePort,const char *RemoteHost,int Flag)
{
	m_LocalPort=LocalPort;
	m_RemotePort=RemotePort;
	m_CenterQueuePort = 0;
	m_CenterMainPort = 0;
	m_RemoteHost=RemoteHost;
	m_CenterHost="";
	m_CurData=NULL;
    m_CenData=NULL;
		//lane data
	m_LaneNo=0;   
	m_TollHouse=0;  //STATION NO

	m_Flag = Flag;
	
	m_DiskBuffer=new CDiskBuffer(BUFFERFILENAME);
	m_ImageBuffer=new CDiskBuffer(BUFFERIMAGENAME);
//	m_CentBuffer=new CDiskBuffer(BUFFERCENTNAME);
}

CCSEntity::CCSEntity(UINT LocalPort,UINT CenterQueuePort,UINT CenterMainPort,const char *CenHost, int Flag)
{
    m_LocalPort=LocalPort;
	m_RemotePort=CenterQueuePort;
	m_CenterQueuePort=CenterQueuePort;
	m_CenterMainPort=CenterMainPort;
	m_RemoteHost=CenHost;
	m_CenterHost=CenHost;
	m_CurData=NULL;
    m_CenData=NULL;

	m_LaneNo=0;
	m_TollHouse=0;

	m_Flag = Flag;

    m_CentBuffer=new CDiskBuffer(BUFFERCENTNAME);
}

int CCSEntity::ReadFromDatabase(DatabaseID *m_baseid,CCenterDataList* CenCriticalData)
{
	char destination[5];
	char source[5];
	char message[250];
	SQLRETURN  retcode;
	retcode = SQLAllocHandle(SQL_HANDLE_STMT, m_baseid->hdbc, &m_baseid->hstmt); 
    if(retcode == SQL_SUCCESS|| retcode == SQL_SUCCESS_WITH_INFO)
	{
	   char m_sql[]="select ";
	   char m_sql2[75];
	   sprintf(m_sql2,"%s* from centemp",m_sql);
	   char m_destination[20],m_sn[11],m_dayvalue[20],m_packettype[3],m_requesttype[3],m_oprcode[7];
 	   char m_source[20],m_message[255];
	   SQLINTEGER m_destinationlen,m_snlen,m_dayvaluelen,m_packettypelen,m_requesttypelen,m_oprcodelen,m_sourcelen,m_messagelen;
	
	   retcode=SQLPrepare(m_baseid->hstmt,(unsigned char*)m_sql2,strlen(m_sql2));
	   if(retcode == SQL_SUCCESS||retcode == SQL_SUCCESS_WITH_INFO)
	   {
		  retcode = SQLExecDirect(m_baseid->hstmt,(unsigned char *)m_sql2,strlen(m_sql2));
          if(retcode == SQL_SUCCESS||retcode == SQL_SUCCESS_WITH_INFO)
		  {
	         retcode=SQLBindCol(m_baseid->hstmt, 1, SQL_CHAR, m_destination, 20, NULL);
	         retcode=SQLBindCol(m_baseid->hstmt, 2, SQL_CHAR, m_sn, 11, NULL);
	         retcode=SQLBindCol(m_baseid->hstmt, 4, SQL_CHAR, m_packettype, 3, NULL);
	         retcode=SQLBindCol(m_baseid->hstmt, 5, SQL_CHAR, m_requesttype, 3, NULL);
	         retcode=SQLBindCol(m_baseid->hstmt, 6, SQL_CHAR, m_oprcode, 7, NULL);
	         retcode=SQLBindCol(m_baseid->hstmt, 7, SQL_CHAR, m_source, 20,NULL);
	         retcode=SQLBindCol(m_baseid->hstmt, 8, SQL_CHAR, m_message, 255, NULL);
		  }
		  while(1)
		  {
	        retcode = SQLFetch(m_baseid->hstmt);
			if(retcode==SQL_SUCCESS||retcode==SQL_SUCCESS_WITH_INFO)
			{
                SeparateHostName((char *)m_destination,".",destination);
				SeparateHostName((char *)m_source,".",source);
			    memcpy(message,m_message,250);
				message[250]='\0';
				char value[278];
				sprintf(value,"%s%s%s%s%s%s%s",m_packettype,m_sn,m_requesttype,m_oprcode,source,destination,message);
             	CCenterData *m_struct = new CCenterData(value,2,1000);
                CenCriticalData->AddTail(m_struct);
			}
			else{ 
	            SQLFreeHandle(SQL_HANDLE_STMT, m_baseid->hstmt);
				return 0;
			}
		  }
	   }
       else{
	     SQLFreeHandle(SQL_HANDLE_STMT, m_baseid->hstmt);
	      return 1;
	   }
	}
   else return 1;
   return 1;
}

BOOL CCSEntity::Init()
{
//create the window
//	Create(AfxRegisterWndClass(0),"Protocol Entity Window");	
//Initialize timer parameter
	m_TimeOutInterval=1000;  //1 second
	m_SendTimerEvent=1;            
	m_SendTimerId=0;
   // m_TimeOutCounter=0;
    if(m_Flag == 1){
	   m_Socket=new CEntitySocket(this);
	   if(!m_Socket->Create(m_LocalPort,SOCK_DGRAM)){
		  AfxMessageBox("Winsock Create Error!");
		  return FALSE;
	   }
	}
	else{
	   m_CSocket = new CCenterSocket(this);
	   if(!m_CSocket->Create(m_CenterQueuePort,SOCK_DGRAM)){
		  AfxMessageBox("Winsock Create Error!");
		 return FALSE;
	   }
		
	}

	if(!Create(NULL,"Protocol Entity Window!")){
	    AfxMessageBox("Protocol Entity window Create failed");	
	    return FALSE;
	}

	if(m_Flag == 1)
	{
//read data from disk
	    m_DiskBuffer->ReadData(&m_CriticalData);   
        m_ImageBuffer->ReadData(&m_ImageFileData); 
//start with state idle
	    if(!m_ImageFileData.IsEmpty())
		{
	       m_State=Entity_File;
		   ActiveSend();
		}
	    else{
	     m_State=Entity_Idle;
	     if(!m_CriticalData.IsEmpty()){
	        char *p = (char*)m_CriticalData.GetHead()->m_OutBuffer;
	        if((p[1]=='A')&&(p[2]=='I'))
		        PackFlag=TRUE; 
		    ActiveSend();
		 }
		}
	}
	else
	{
        //ReadFromDatabase(&m_DbId,&m_CenCriticalData);
		m_CentBuffer->ReadData(&m_CenCriticalData);
		m_State=Entity_Idle;
		if(!m_CenCriticalData.IsEmpty())
		   ActiveSend();
	}
	return TRUE;	
}

CCSEntity::~CCSEntity()
{           
 if(m_Flag==1)
 {
	m_Socket->Close();
	delete m_Socket;
	                    
//save data in the buffer to disk
	m_DiskBuffer->SaveData(&m_CriticalData);
	m_ImageBuffer->SaveData(&m_ImageFileData);		                    
	while(!m_CriticalData.IsEmpty())
		delete m_CriticalData.RemoveHead();
	                     
	while(!m_CriticalReplyData.IsEmpty())
		delete m_CriticalReplyData.RemoveHead();
		                     
	while(!m_NonCriticalData.IsEmpty())
		delete m_NonCriticalData.RemoveHead();

	while(!m_ImageFileData.IsEmpty())
		delete m_ImageFileData.RemoveHead();
	delete m_DiskBuffer;	
	delete m_ImageBuffer;
	//destroy the window	
	DestroyWindow();
 }
 else{
	m_CSocket->Close();
	delete m_CSocket;
	                    
	m_CentBuffer->SaveData(&m_CenCriticalData);
	while(!m_CenCriticalData.IsEmpty())
		delete m_CenCriticalData.RemoveHead();
	                     
	while(!m_CenCriticalReplyData.IsEmpty())
		delete m_CenCriticalReplyData.RemoveHead();
		                     
	while(!m_CenNonCriticalData.IsEmpty())
		delete m_CenNonCriticalData.RemoveHead();

	//destroy the window	
	delete m_CentBuffer;
	DestroyWindow();
 
 }
 //ExitWindowsEx(EWX_REBOOT,0);

}

BOOL CCSEntity::ConfigSock(UINT LocalPort,UINT RemotePort,const char *RemoteHost)
{
	ASSERT(m_Socket);
	m_LocalPort=LocalPort;
	m_RemotePort=RemotePort;
	m_RemoteHost=RemoteHost;
	if(m_Socket->m_hSocket)	
		m_Socket->Close();
	if(!m_Socket->Create(m_LocalPort,SOCK_DGRAM)){
		AfxMessageBox("Winsock Create Error!");   
		return FALSE;	
	}	
	return TRUE;	
}

BOOL CCSEntity::Link(CCSUser *CSUser,WORD UserId)
{
	void *user;
	if(m_UserList.Lookup(UserId,user)){
#ifdef _DEBUG
		AfxMessageBox("This user id has already been used");
#endif                                 
		return FALSE;                                    
	}
	m_UserList.SetAt(UserId,CSUser);
	return TRUE;
} 

BOOL CCSEntity::UnLink(CCSUser *CSUser)
{                 
	POSITION pos;
	WORD key;
	void *value;
	BOOL fmatch=FALSE;
	pos=m_UserList.GetStartPosition();
	while(pos!=NULL)
	{
		m_UserList.GetNextAssoc(pos, key, value);		
		if(value==CSUser){
			fmatch=TRUE;
			m_UserList.RemoveKey(key);
			break;
		}
	}	         
//do other action	
//	:
//	:
//	:
//	:

//	
	return fmatch;
}

char* CCSEntity::SeparateHostName(char *string,char *sepstring,char returnstring[])
{
	char temp[30];
	sprintf(temp,"%s",string);
	char *token=strtok(temp,sepstring);
	int i=0;
	while(token!=NULL)
	{
		returnstring[i]=atoi(token);
		token=strtok(NULL,sepstring);
		i++;
	}
	returnstring[i]='\0';
	return returnstring;
}

char* CCSEntity::FormateHostName(char destination[],char host[])
{
	unsigned char dest[4];
	char temp[1];
	memset(host,'\0',sizeof(host));
	memset(temp,'\0',sizeof(temp));
	dest[0]=destination[0];
	(void)itoa(dest[0],temp,10);
	strcat(host,temp);
	strcat(host,".");
	dest[1]=destination[1];
	(void)itoa(dest[1],temp,10);
	strcat(host,temp);
	strcat(host,".");

	dest[2]=destination[2];
	(void)itoa(dest[2],temp,10);
	strcat(host,temp);
	strcat(host,".");

	dest[3]=destination[3];
	(void)itoa(dest[3],temp,10);
	strcat(host,temp);
	return host;
}
void CCSEntity::FormateDBvalues(CCenterData* m_struct,char *value)
{
	char destination[20];
	char source[20];
	strcpy(destination,FormateHostName(m_struct->destination,destination ));
	strcpy(source,FormateHostName(m_struct->source,source));
	char pts[30];
	memset(pts,'\0',sizeof(pts));
	struct tm *t_time;
	time_t my_time;
	(void)time(&my_time);
	t_time=localtime(&my_time);
	int cc=strftime(pts,30,"%y-%m-%d %H:%M:%S",t_time);
	sprintf(value,"'%s','%10s','%s','%2s','%2s','%6s','%s',\"%s\"",destination,m_struct->sn, \
		pts,m_struct->packettype,m_struct->requesttype ,m_struct->oprcode , \
		source,m_struct->message );		
}
  
int CCSEntity::InsertToDatabase(DatabaseID *m_baseid,CCenterData* m_struct)
{
	char value[MAXPACKETLEN];
	
	FormateDBvalues(m_struct,value);
	int ret = InsertSQL(m_baseid,"centemp",value);
	 if(ret)
		 AfxMessageBox("Insert to local db error!");
	return 0;
}

int CCSEntity::InsertToDatabase(DatabaseID *m_baseid,CCenterDataList * DataList)
{                                                                      
	if(DataList->IsEmpty()){
	    DeleteSQL(&m_DbId,"centemp","");
		return 0;	
	}
	DeleteSQL(&m_DbId,"centemp","");

	for(POSITION pos=DataList->GetHeadPosition();pos!=NULL;)
	{
		 InsertToDatabase(m_baseid,DataList->GetNext(pos));  
	}
	
    return 0; 
}

unsigned long CCSEntity::Send(CCSUser *CSUser,const void *OutBuffer,UINT16 OutBufLen,  
				BOOL bCritical,BOOL bReply,int TimeOutInterval)
{

	//lookup for this user whether it has been linked
//	char* tmpbuf=(char*)OutBuffer;
	POSITION pos;
	WORD UserId;
	void *value;
	BOOL fMatch=FALSE;
	pos=m_UserList.GetStartPosition();
	while(pos!=NULL)
	{
		m_UserList.GetNextAssoc(pos, UserId, value);		
		if(value==CSUser)
		{
			fMatch=TRUE;
			break;
		}
	}	         
	if(!fMatch)
	{
#ifdef _DEBUG
		AfxMessageBox("The user has not been linked to the service!");
#endif	
		return 0;
	}	
	
    char *tmpbuf = (char*)OutBuffer;
	if(m_Flag == 1)
	{
	    if((tmpbuf[1]=='D')&&(tmpbuf[2]=='B'))
	       TimeOutInterval = 20000; 

	    CCServiceData *ServiceData=
		     new CCServiceData(OutBuffer,OutBufLen,UserId,bCritical,bReply,TimeOutInterval);
	    ServiceData->SetSequenceNumber(m_SequenceNum.Get());
	
	    if(bCritical){
		   if(!bReply){
			   m_CriticalData.AddTail(ServiceData);
			   if(m_CriticalData.GetCount()>60000){
				   delete m_CriticalData.RemoveTail();
				   CSUser->OnReply(0L,NULL,0,0,TOOMANYREQUEST);
				   return 0L;            
			   }	
			   if((m_State==Entity_Timeouting)||(m_State==Entity_File)||(m_State==Entity_File_Timeouting))
				   m_DiskBuffer->SaveData(ServiceData);	
		   }	
		   else{
			   m_CriticalReplyData.AddTail(ServiceData);	
			   if(m_CriticalReplyData.GetCount()>10){
				   delete m_CriticalReplyData.RemoveTail();
				   CSUser->OnReply(0L,NULL,0,0,TOOMANYREQUEST);
				   return 0L;
			   }
		   }	
		}	
	    else{
		    m_NonCriticalData.AddTail(ServiceData);
		}
	//active to send 	     
	    if(m_State==Entity_Idle)
		   ActiveSend();
		return ServiceData->GetSequenceNumber();
	}
	else
	{
		CCenterData *CenterData = new CCenterData(tmpbuf,UserId,TimeOutInterval);
		CenterData->SetSequenceNumber(m_SequenceNum.Get());
	    if(bCritical){
		   if(!bReply){
			   m_CenCriticalData.AddTail(CenterData);
//	           InsertToDatabase(&m_DbId,CenterData);
			   
			   if(m_CenCriticalData.GetCount()>60000){
				   delete m_CenCriticalData.RemoveTail();
				   //CSUser->OnReply(0L,NULL,0,0,TOOMANYREQUEST);
				   return 0L;            
			   }	
			   if(m_State==Entity_Timeouting)
                   m_CentBuffer->SaveData(CenterData);			   
		   }	
		   else{
			   m_CenCriticalReplyData.AddTail(CenterData);	
			   if(m_CenCriticalReplyData.GetCount()>10){
				   delete m_CenCriticalReplyData.RemoveTail();
				   //CSUser->OnReply(0L,NULL,0,0,TOOMANYREQUEST);
				   return 0L;
			   }
		   }	
		}	
	    else{
		    m_CenNonCriticalData.AddTail(CenterData);
		}
	//active to send 	     
	    if(m_State==Entity_Idle)
		   ActiveSend();
		return CenterData->GetSequenceNumber();
	}
}				

BEGIN_MESSAGE_MAP(CCSEntity, CFrameWnd)
	//{{AFX_MSG_MAP(CCSEntity)
	ON_WM_TIMER()
	//}}AFX_MSG_MAP
END_MESSAGE_MAP()

/////////////////////////////////////////////////////////////////////////////
// CCSEntity message handlers

//SendToSock
//This function form protocol data unit, and send to socket
BOOL CCSEntity::SendToSock(void *Data)
{                               
	if(m_Flag == 1)
	{
    CCServiceData * ServiceData = (CCServiceData*) Data;
	UINT32 SequenceNum=ServiceData->GetSequenceNumber();
	ASSERT(SequenceNum!=0);
	ServiceData->GetSendPDU();
	if(m_Socket->SendTo(ServiceData->GetSendPDU(),ServiceData->GetSendPDULen(),
				m_RemotePort,m_RemoteHost)==SOCKET_ERROR)
		return FALSE;
	else
		return TRUE;
	}
	else{
	CCenterData * CenterData = (CCenterData*) Data;
	UINT32 SequenceNum=CenterData->GetSequenceNumber();
	ASSERT(SequenceNum!=0);
	CenterData->GetSendPDU();
	if(!strcmp(CenterData->requesttype,"03"))
	{
	if(m_CSocket->SendTo(CenterData->GetSendPDU(),CenterData->GetSendPDULen(),
				m_RemotePort,m_CenterHost)==SOCKET_ERROR)
		return FALSE;
	else
		return TRUE;
	}
	if(!strcmp(CenterData->requesttype,"04"))
	{
	if(m_CSocket->SendTo(CenterData->GetSendPDU(),CenterData->GetSendPDULen(),
				m_CenterMainPort,m_CenterHost)==SOCKET_ERROR)
		return FALSE;
	else
		return TRUE;
	}
	return FALSE;
	}
}

//override this function to avoid "delete this" of base class,
//for the CCSEntity object is deleted by delete operation
void CCSEntity::PostNcDestroy()
{
}

void CCSEntity::ActivateFrame(int nCmdShow)
{
	nCmdShow=SW_MINIMIZE;	
	CFrameWnd::ActivateFrame(nCmdShow);
}

//when receive reply,remove the current protocol data from list
void CCSEntity::RemoveData(void *Data)
{                               
  if(m_Flag == 1)
  {
	CCServiceData* CurData = (CCServiceData*) Data;
	BOOL Delete=FALSE;
	if(!m_ImageFileData.IsEmpty()){
		if(CurData==m_ImageFileData.GetHead()){
			delete m_ImageFileData.RemoveHead();

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
亚洲人午夜精品天堂一二香蕉| 成人免费高清在线观看| 成人午夜视频在线观看| 欧美日韩一区中文字幕| 国产精品二三区| 看片网站欧美日韩| 欧美色视频一区| 综合激情成人伊人| 国产成人小视频| 日韩欧美一二区| 亚洲午夜私人影院| 99精品视频在线免费观看| 国产亚洲欧美日韩俺去了| 日本欧美一区二区| 欧美日韩国产天堂| 亚洲一级二级在线| 91丨九色丨蝌蚪丨老版| 国产欧美久久久精品影院| 美腿丝袜亚洲综合| 日韩一区二区三区免费观看| 亚洲一区二区免费视频| 99免费精品视频| 国产精品色婷婷| 国产成人精品www牛牛影视| 精品国产青草久久久久福利| 日韩精品乱码免费| 69堂成人精品免费视频| 午夜久久久影院| 欧美群妇大交群中文字幕| 亚洲成av人在线观看| 欧美性猛片aaaaaaa做受| 夜夜揉揉日日人人青青一国产精品| www.日韩大片| 亚洲人成7777| 色狠狠一区二区| 亚洲影视在线观看| 欧美日韩国产大片| 麻豆精品精品国产自在97香蕉| 欧美一区二区三区在线观看| 日韩高清一区在线| 欧美一级久久久久久久大片| 欧美96一区二区免费视频| 日韩一区二区三区免费看| 国产一区二区三区免费在线观看| 久久香蕉国产线看观看99| 国产精品一二三四五| 日韩一区中文字幕| 在线观看网站黄不卡| 亚洲h精品动漫在线观看| 欧美tickling网站挠脚心| 成人在线视频一区二区| 亚洲美女屁股眼交3| 欧美欧美欧美欧美首页| 狠狠色伊人亚洲综合成人| 国产亚洲一本大道中文在线| 91丝袜高跟美女视频| 日韩不卡一区二区三区| 国产亚洲自拍一区| 欧美色偷偷大香| 国产电影一区在线| 亚洲成在线观看| 精品国产91九色蝌蚪| 97精品久久久午夜一区二区三区 | 成人免费小视频| 欧美日韩高清一区二区不卡| 精品一区二区三区日韩| 国产精品初高中害羞小美女文| 欧美日韩国产小视频| 国产成人自拍高清视频在线免费播放| 最新国产成人在线观看| 91麻豆精品国产91久久久久久| 国内精品不卡在线| 亚洲综合久久久| 久久久久久久久久看片| 欧美色区777第一页| 成人丝袜高跟foot| 日本欧美一区二区三区| 亚洲欧美另类图片小说| 精品国产乱码久久久久久夜甘婷婷 | 成人av电影在线播放| 日韩黄色片在线观看| 亚洲视频你懂的| 久久日一线二线三线suv| 欧美无砖砖区免费| 成人国产亚洲欧美成人综合网| 视频一区在线视频| 一区二区三区产品免费精品久久75| 久久影院午夜片一区| 制服丝袜一区二区三区| 91福利国产成人精品照片| 国产91精品一区二区麻豆网站| 日韩精品色哟哟| 亚洲自拍偷拍麻豆| 亚洲欧洲美洲综合色网| 亚洲国产精品黑人久久久| 精品国产一二三区| 91精品在线免费观看| 欧美在线视频日韩| 色婷婷综合久色| av欧美精品.com| 成人夜色视频网站在线观看| 国产综合久久久久久久久久久久 | 国产一区二区三区香蕉| 久久精品国产免费看久久精品| 日韩电影免费在线观看网站| 一区二区成人在线视频| 亚洲免费av网站| 亚洲摸摸操操av| 一区二区成人在线视频| 一区二区三区精密机械公司| 亚洲精选一二三| 亚洲免费av网站| 亚洲综合激情另类小说区| 亚洲一区二区av在线| 一片黄亚洲嫩模| 午夜精品福利一区二区蜜股av| 亚洲高清在线精品| 五月婷婷色综合| 蜜臀av一区二区| 激情图区综合网| 国产乱国产乱300精品| 国产精品一区二区黑丝| 东方aⅴ免费观看久久av| 丁香婷婷深情五月亚洲| 91在线观看免费视频| 一本大道综合伊人精品热热| 色婷婷av一区二区三区gif| 在线视频一区二区三区| 欧美美女网站色| 日韩免费看的电影| 中文字幕的久久| 一区二区三区四区高清精品免费观看| 一区二区三区日韩欧美精品| 欧美aⅴ一区二区三区视频| 激情六月婷婷久久| 99久久精品国产精品久久| 色老头久久综合| 日韩欧美在线网站| 欧美国产日产图区| 亚洲国产精品久久久久秋霞影院| 日韩精品一卡二卡三卡四卡无卡| 精品一区二区在线看| jlzzjlzz欧美大全| 777xxx欧美| 国产精品亲子乱子伦xxxx裸| 亚洲视频一区二区在线观看| 午夜精品免费在线| 成人精品电影在线观看| 欧美高清dvd| 国产片一区二区| 午夜精品福利一区二区蜜股av| 国产一区在线不卡| 91行情网站电视在线观看高清版| 日韩三级视频在线观看| 亚洲免费在线观看视频| 奇米精品一区二区三区四区| av毛片久久久久**hd| 精品久久久久久综合日本欧美| 中文字幕亚洲一区二区av在线| 日韩电影在线免费看| 91丨九色丨尤物| 久久综合999| 午夜精彩视频在线观看不卡| 国产成人av电影| 日韩亚洲欧美一区| 亚洲精品视频在线看| 国产精品一级在线| 日韩一区二区在线看| 日韩美女精品在线| 国内久久婷婷综合| 欧美日韩一区二区三区视频 | 国模一区二区三区白浆| 欧美午夜精品一区二区蜜桃| 欧美国产视频在线| 精品系列免费在线观看| 欧美日韩免费在线视频| 亚洲欧美日韩电影| 成人永久看片免费视频天堂| 精品成人在线观看| 蜜臀av在线播放一区二区三区 | 91麻豆国产香蕉久久精品| 精品动漫一区二区三区在线观看| 日日嗨av一区二区三区四区| 色老综合老女人久久久| 亚洲日本免费电影| www.亚洲免费av| 国产精品动漫网站| 成人黄色a**站在线观看| 国产欧美一区二区在线| 国产精品一二二区| 久久久久久亚洲综合影院红桃| 精品一区二区影视| 日韩精品一区在线| 久久99蜜桃精品| 精品久久一区二区三区| 精品一区在线看| 久久久精品综合| 国产一区二区三区在线观看免费| 精品第一国产综合精品aⅴ| 国产永久精品大片wwwapp |