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

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

?? sgipapp.cpp

?? 聯通的短信網關平臺。 sp 使用。 如果想自己用vc 開發短信業務
?? CPP
?? 第 1 頁 / 共 3 頁
字號:
							nTmpResult = SGIP_SUCCEED;
						}
						else
						{
							delete [] (char *)pBody;
							nTmpResult = SGIP_NODE_BUSY;
						}
						pthread_mutex_unlock(&m_ReportVec_mutex);

						SEQUENCE_NUM sSequence;
						memset(&sSequence, 0, sizeof(sSequence));
						memcpy(&sSequence, &pMsg->Head.sSeqNo, sizeof(sSequence));
						
						memset(cBuf, 0, sizeof(cBuf));
						SGIP_REPORTRESP_BODY stResp;
						int nBufLen = 0;
						m_pkg->DeComposePackage(SGIP_REPORT_RESP, (SGIP_MSG_BODY &)stResp, (char *)cBuf, &nBufLen);
						SGIP_REPORTRESP_MSG *pMsgResp = (SGIP_REPORTRESP_MSG *)cBuf;
						pMsgResp->Body.cResult = nTmpResult;
						memcpy(&pMsgResp->Head.sSeqNo, &sSequence, sizeof(sSequence));				

						SendToSMC(m_nSendSock, cBuf, nBufLen);
						break;
					}
					else
					{						
						printf("recv a msg, but no submit resp! %02x\n", iMsgType);
						break;
					}
				}
				else//recv error or time out---break;
				{
					printf("the %d times Submit recv response error!\n", nSubmitTimes);
					break;
				}
			}
		}
		m_pLog->add("...error!\n");
	}

	if (bSendFinish)
	{
		DisConnect(m_nSendSock);
		m_nSendSock = -1;
	}
	return END_FAILED;
}



bool CSGIPApp::HadTimeOut(time_t tBase, int nRequestTimeout)
{
	if ((time(NULL) - tBase) >= nRequestTimeout)
		return true;
	else
		return false;
}

void *GetAcceptProc(CSGIPApp *pSGIPApp)
{
	pthread_mutex_lock(&g_WGSrvCreate_mutex);
	if (g_bWingateServerCreate)
	{
		pthread_mutex_unlock(&g_WGSrvCreate_mutex);
		return NULL;
	}
	else
	{
		g_bWingateServerCreate = true;
		pthread_mutex_unlock(&g_WGSrvCreate_mutex);
	}
	
	while (!pSGIPApp->bTermitnate)
	{
		while (pSGIPApp->m_Listenfd == -1)
		{
			pSGIPApp->m_Listenfd = pSGIPApp->CreateServer(g_iLocalPort);
			usleep(10);
		}

		if (pSGIPApp->m_Listenfd != -1)
			printf("Create server LOCALHOST:%d sockfd=%d succeed!\n", \
					g_iLocalPort, pSGIPApp->m_Listenfd);

		while (true)
		{
			if (pSGIPApp->m_Listenfd == -1)
			{
				break;
			}

			pthread_mutex_lock(&pSGIPApp->m_AcceptSock_mutex);
			pSGIPApp->m_nAccSock = pSGIPApp->GetAccept(pSGIPApp->m_Listenfd);
			if (pSGIPApp->m_nAccSock == -1)
			{
				pthread_mutex_unlock(&pSGIPApp->m_AcceptSock_mutex);
				usleep(100);
				continue;
			}
			else
			{
				printf("accept a client %d\n", pSGIPApp->m_nAccSock);
				pthread_attr_t pAttr;
				pthread_attr_init(&pAttr);
				pthread_attr_setdetachstate(&pAttr,  PTHREAD_CREATE_DETACHED);
				pthread_t iThrRecv = 0;
				int ret = pthread_create(&iThrRecv, &pAttr, (void *(*) (void *))RecvThread, (void *)pSGIPApp);
				if(ret != 0)
				{
					pthread_mutex_unlock(&pSGIPApp->m_AcceptSock_mutex);
					printf("accept succeed but new thread error!\n");
					continue;
				}
				else
					printf("new Recv thread ID:%ld succeed!\n", iThrRecv);
			}
		}
	}

	g_bWingateServerCreate = false;
	printf("====Accept Proc exit!======\n");
	return NULL;
}

void *RecvThread(CSGIPApp *pSGIPApp)
{
	int nSockfd = -1;
	nSockfd = pSGIPApp->m_nAccSock;
	pthread_mutex_unlock(&pSGIPApp->m_AcceptSock_mutex);

	char cBuf[5120] = "";
	char cSendBuf[1024] = "";
	CSGIPPkg mPackage;


	memset(&cBuf, 0, sizeof(cBuf));
	int nRecvLen = sizeof(cBuf);

	int nReturn = -1;

	if ((nReturn = pSGIPApp->RecvFromSMC(nSockfd, (char *)cBuf, &nRecvLen, 60)) != END_FAILED)
	{
		
		//added by liaomch 2003-10-16
		//加入超時不發數據的處理
		if (nReturn == -2) //time out
		{
			printf("====invalid accept sockfd=%d[time out no recv], close!====\n", nSockfd);
			close(nSockfd);
			printf("Recv thread id:%ld exit!\n", pthread_self());
			return NULL;
		}
		//end added

		int iMsgType = -1;
		iMsgType = mPackage.GetPackageType((const char *)cBuf);
		if (iMsgType != SGIP_BIND) 
		{
			printf("recv thread get a pakcage: %02x\n", iMsgType);
			pSGIPApp->DisConnect(nSockfd);
			//close(nSockfd);
			printf("Recv thread id:%ld exit!\n", pthread_self());
			return NULL;
		}
		else
		{
			SGIP_BIND_MSG *pMsg = (SGIP_BIND_MSG *)cBuf;			
			
			if ((memcmp((const char *)&pMsg->Body.cLoginName, (const char *)g_cLUserName, strlen(pMsg->Body.cLoginName)) == 0) &&
				(memcmp((const char *)&pMsg->Body.cLoginPwd, (const char *)g_cLUserName, strlen(pMsg->Body.cLoginPwd)) == 0))
			{
				memset(cSendBuf, 0, sizeof(cSendBuf)); 
				SGIP_BINDRESP_BODY stResp;
				int nBufLen = 0;
				mPackage.DeComposePackage(SGIP_BIND_RESP, (SGIP_MSG_BODY &)stResp, (char *)cSendBuf, &nBufLen);
				SGIP_BINDRESP_MSG *pRespMsg = (SGIP_BINDRESP_MSG *)cSendBuf;
				memcpy(&pRespMsg->Head.sSeqNo, &pMsg->Head.sSeqNo, sizeof(pMsg->Head.sSeqNo));

				pRespMsg->Body.cResult = SGIP_SUCCEED;
				if ((pMsg->Body.cLoginType != 2) && (pMsg->Body.cLoginType != 1))
					pRespMsg->Body.cResult = SGIP_LOGIN_TYPE_ERR;

				if (!pSGIPApp->SendToSMC(nSockfd, cSendBuf, nBufLen))
				{
					close(nSockfd);
					printf("Send bind Response failed!\n"
						"Recv thread id:%ld exit!\n", pthread_self());
					return NULL;
				}
			}
			else
			{
				memset(cSendBuf, 0, sizeof(cSendBuf)); 
				SGIP_BINDRESP_BODY stResp;
				int nBufLen = 0;
				mPackage.DeComposePackage(SGIP_BIND_RESP, (SGIP_MSG_BODY &)stResp, (char *)cSendBuf, &nBufLen);
				SGIP_BINDRESP_MSG *pRespMsg = (SGIP_BINDRESP_MSG *)cSendBuf;
				memcpy(&pRespMsg->Head.sSeqNo, &pMsg->Head.sSeqNo, sizeof(pMsg->Head.sSeqNo));
				
				pRespMsg->Body.cResult = SGIP_LOGIN_INVALID;
				
				if (!pSGIPApp->SendToSMC(nSockfd, cSendBuf, nBufLen))
				{
					printf("Send bind Response failed!\n");
				}
				close(nSockfd);
				printf("Bind message validate failed!\n"
					"Recv thread id:%ld exit!\n", pthread_self());
				return NULL;
			}
		}
	}
	else//accept, recv a unknow package or timeout:
	{
		printf("====invalid accept sockfd=%d, close!====\n", nSockfd);
		close(nSockfd);
		printf("Recv thread id:%ld exit!\n", pthread_self());
		return NULL;		
	}

	while (true)
	{
		memset(&cBuf, 0, sizeof(cBuf));

		nRecvLen = sizeof(cBuf);

		if ((nReturn = pSGIPApp->RecvFromSMC(nSockfd, (char *)cBuf, &nRecvLen, 60)) != END_FAILED)
		{
			//added by liaomch 2003-10-16
			//加入超時不發數據的處理
			if (nReturn == -2) //time out
			{
				printf("====time out no recv package[sock=%d], close!====\n", nSockfd);
				pSGIPApp->DisConnect(nSockfd);
				printf("Recv thread id:%ld exit!\n", pthread_self());
				return NULL;
			}
			//end added

			int nMsgType = 0;
			nMsgType = mPackage.GetPackageType((const char *)cBuf);
			printf("Get a Package: msgtype = %02x\n", nMsgType);

			switch (nMsgType)
			{
			case SGIP_DELIVER:
				{
					printf("recv a deliver package!\n");

					SGIP_DELIVER_MSG sDeliverMsg;
					memset(&sDeliverMsg, 0, sizeof(sDeliverMsg));
					mPackage.ComposePackage(nMsgType, (SGIP_MSG &)sDeliverMsg, (const char *)cBuf);

					SGIP_DELIVER_PACKAGE *pDeliverBody = NULL;
					bool bFirst = true;
					while (pDeliverBody == NULL)
					{
						if (!bFirst)
						{
							printf("ATTENTION: Apply Memory error!\n");							
							usleep(10);
						}
						
						pDeliverBody = (SGIP_DELIVER_PACKAGE *)new char[sizeof(SGIP_DELIVER_PACKAGE)];
						memset(pDeliverBody, 0, sizeof(SGIP_DELIVER_PACKAGE));
						bFirst = false;
					}
					memcpy(&pDeliverBody->Body, &sDeliverMsg.Body, sizeof(SGIP_DELIVER_BODY));
					sprintf(pDeliverBody->cMsgid, "%u%010d%d",
							ntohl(sDeliverMsg.Head.sSeqNo.iSrcID),
							ntohl(sDeliverMsg.Head.sSeqNo.iDate),
							ntohl(sDeliverMsg.Head.sSeqNo.iSeqno)
						);

#ifdef __DEBUG_API__
					SGIP_DELIVER_MSG *pMsg = &sDeliverMsg;					
					printf("recv a ==DELIVER== package!\n");
					printf("\tiMsgLen=%d\n"
						"\tiMsgType=%02x\n"
						"\tiMsgid=%u%010d%d\n"
						"\tcMsgCoding=%d\n"
						"\tcUserNumber=%s\n"
						"\tcContent=%s\n",
						ntohl(pMsg->Head.iMsgLen),
						ntohl(pMsg->Head.iCmdID),
						ntohl(pMsg->Head.sSeqNo.iSrcID),
						ntohl(pMsg->Head.sSeqNo.iDate),
						ntohl(pMsg->Head.sSeqNo.iSeqno),
						pMsg->Body.cMessageCoding,
						pMsg->Body.cUserNumber,
						pMsg->Body.cMessageContent);
#endif //
					
					pthread_mutex_lock(&pSGIPApp->m_DeliverVec_mutex);
					int nTmpResult = -1;
					if ((pSGIPApp->m_pDeliver.size() < MAX_QUEUE_LEN) &&
						(pSGIPApp->m_pDeliver.size() <pSGIPApp->m_pDeliver.max_size()))
					{						
						pSGIPApp->m_pDeliver.push_back(pDeliverBody);
						nTmpResult = SGIP_SUCCEED;
					}
					else
					{
						delete [] (char *)pDeliverBody;
						nTmpResult = SGIP_NODE_BUSY;
					}
					
					pthread_mutex_unlock(&pSGIPApp->m_DeliverVec_mutex);

					SEQUENCE_NUM sSequence;
					memset(&sSequence, 0, sizeof(sSequence));
					memcpy(&sSequence, &sDeliverMsg.Head.sSeqNo, sizeof(sSequence));
					
					memset(cSendBuf, 0, sizeof(cSendBuf));
					SGIP_DELIVERRESP_BODY stResp;
					int nBufLen = 0;
					mPackage.DeComposePackage(SGIP_DELIVER_RESP, (SGIP_MSG_BODY &)stResp, (char *)cSendBuf, &nBufLen);
					
					SGIP_DELIVERRESP_MSG *pMsgResp = (SGIP_DELIVERRESP_MSG *)cSendBuf;
					
					*(cSendBuf+sizeof(SGIP_HEAD)) = nTmpResult;

					memcpy(&pMsgResp->Head.sSeqNo, &sSequence, sizeof(sSequence));
	
					if (!pSGIPApp->SendToSMC(nSockfd, cSendBuf, nBufLen))
					{
						printf("Send Deliver Response error!\n");
					}
					else
						printf("Send Deliver Response succeed!\n");
					
					break;
				}

			case SGIP_REPORT:
				{
					printf("recv a report package!\n");

					SGIP_REPORT_MSG sReportMsg;
					memset(&sReportMsg, 0, sizeof(sReportMsg));
					mPackage.ComposePackage(nMsgType, (SGIP_MSG &)sReportMsg, (const char *)cBuf);

					SGIP_REPORT_PACKAGE *pReportBody = NULL;	
					bool bFirst = true;
					while (pReportBody == NULL)
					{
						if (!bFirst)
						{
							printf("ATTENTION: Apply Memory error!\n");
							usleep(10);
						}
						
						pReportBody = (SGIP_REPORT_PACKAGE *)new char[sizeof(SGIP_REPORT_PACKAGE)];
						bFirst = false;		
					}					
					memcpy(&pReportBody->Body, &sReportMsg.Body, sizeof(SGIP_REPORT_BODY));
					sprintf(pReportBody->cMsgid, "%u%010d%d",
							ntohl(sReportMsg.Head.sSeqNo.iSrcID),
							ntohl(sReportMsg.Head.sSeqNo.iDate),
							ntohl(sReportMsg.Head.sSeqNo.iSeqno));

#ifdef __DEBUG_API__
					SGIP_REPORT_MSG *pMsg = &sReportMsg;					
					printf("recv a ==REPORT== package!\n");
					printf("\tiMsgLen=%d\n"
						"\tiMsgType=%02x\n"
						"\tiMsgid=%u%010d%d\n"
						"\tcState=%d\n"
						"\tcUserNumber=%s\n"
						"\tcErrorCode=%d\n",
						ntohl(pMsg->Head.iMsgLen),
						ntohl(pMsg->Head.iCmdID),
						ntohl(pMsg->Head.sSeqNo.iSrcID),
						ntohl(pMsg->Head.sSeqNo.iDate),
						ntohl(pMsg->Head.sSeqNo.iSeqno),
						pMsg->Body.cState,
						pMsg->Body.cUserNumber,
						pMsg->Body.ErrorCode);
#endif //

					pthread_mutex_lock(&pSGIPApp->m_ReportVec_mutex);
					int nTmpResult = -1;
					if ((pSGIPApp->m_pReport.size() < MAX_QUEUE_LEN) &&
						(pSGIPApp->m_pReport.size() <pSGIPApp->m_pReport.max_size()))
					{
						pSGIPApp->m_pReport.push_back(pReportBody);
						nTmpResult = SGIP_SUCCEED;
					}
					else
					{
						delete [] (char *)pReportBody;
						nTmpResult = SGIP_NODE_BUSY;
					}
					pthread_mutex_unlock(&pSGIPApp->m_ReportVec_mutex);

					SEQUENCE_NUM sSequence;
					memset(&sSequence, 0, sizeof(sSequence));
					memcpy(&sSequence, &sReportMsg.Head.sSeqNo, sizeof(sSequence));
															
					memset(cSendBuf, 0, sizeof(cSendBuf));
					SGIP_REPORTRESP_BODY stResp;
					int nBufLen = 0;
					mPackage.DeComposePackage(SGIP_REPORT_RESP, (SGIP_MSG_BODY &)stResp, (char *)cSendBuf, &nBufLen);
							
					SGIP_REPORTRESP_MSG *pMsgResp = (SGIP_REPORTRESP_MSG *)cSendBuf;
					//pMsgResp->Body.cResult = 0;
					*(cSendBuf + sizeof(SGIP_HEAD)) = nTmpResult;
					
					memcpy(&pMsgResp->Head.sSeqNo, &sSequence, sizeof(sSequence));
										
					if (!pSGIPApp->SendToSMC(nSockfd, cSendBuf, nBufLen))
						printf("Send Report Response Error!\n");
					else
						printf("Send Report Response succeed!\n");

					break;
				}

			case SGIP_SUBMIT:
				{
					//SGIP_SUBMIT_MSG *pMsg = (SGIP_SUBMIT_MSG *)cBuf;
					SGIP_SUBMIT_MSG sSubmitMsg;
					memset(&sSubmitMsg, 0, sizeof(sSubmitMsg));
					mPackage.ComposePackage(nMsgType,\
							(SGIP_MSG &)sSubmitMsg, (const char *)cBuf);
					SGIP_SUBMIT_MSG *pMsg = &sSubmitMsg;

#ifdef __DEBUG_API__
					printf("recv a ==SUBMIT== package!\n");
					printf("\tiMsgLen=%d\n"
						"\tiMsgType=%02x\n"
						"\tiMsgid=%u%010d%d\n"
						"\tcMsgType=%d\n"
						"\tcMsgLen=%d\n"
						"\tcMsgContent=%s\n"
						"\tcSpNumber=%s\n"
						"\tcUserNumber=%s\n",
						ntohl(pMsg->Head.iMsgLen),
						ntohl(pMsg->Head.iCmdID),
						ntohl(pMsg->Head.sSeqNo.iSrcID),
						ntohl(pMsg->Head.sSeqNo.iDate),
						ntohl(pMsg->Head.sSeqNo.iSeqno),
						pMsg->Body.cMessageType,
						ntohl(pMsg->Body.iMessageLength),
						pMsg->Body.cMessageContent,
						pMsg->Body.cSPNumber,
						pMsg->Body.cUserNumber
						);
#endif
					
					SEQUENCE_NUM sSequence;
					memset(&sSequence, 0, sizeof(sSequence));
					memcpy(&sSequence, &pMsg->Head.sSeqNo, sizeof(sSequence));
															
					memset(cSendBuf, 0, sizeof(cSendBuf));
					SGIP_SUBMITRESP_BODY stResp;
					int nBufLen = 0;
					mPackage.DeComposePackage(SGIP_SUBMIT_RESP, (SGIP_MSG_BODY &)stResp, (char *)cSendBuf, &nBufLen);
					SGIP_SUBMITRESP_MSG *pMsgResp = (SGIP_SUBMITRESP_MSG *)cSendBuf;
					*(cSendBuf + sizeof(SGIP_HEAD)) = SGIP_SUCCEED;
					memcpy(&pMsgResp->Head.sSeqNo, &sSequence, sizeof(sSequence));
					
					if (!pSGIPApp->SendToSMC(nSockfd, cSendBuf, nBufLen))
						printf("Send Submit Response Error!\n");

					break;
				}

			case SGIP_BIND:
				{
					//SGIP_BIND_MSG *pMsg = (SGIP_BIND_MSG *)cBuf;
					SGIP_BIND_MSG sBindMsg;
					memset(&sBindMsg, 0, sizeof(sBindMsg));
					mPackage.ComposePackage(nMsgType,\
						(SGIP_MSG &)sBindMsg, (const char *)cBuf);
					SGIP_BIND_MSG *pMsg = &sBindMsg;

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
日本午夜一区二区| 久久午夜羞羞影院免费观看| 中国av一区二区三区| 国产精品影视在线| 欧美va在线播放| 国产成人精品亚洲日本在线桃色 | 在线一区二区观看| 一区二区三区国产| 欧美日本一道本在线视频| 亚洲国产另类精品专区| 欧美一区国产二区| 国产黄色成人av| 亚洲天堂成人在线观看| 精品视频在线看| 麻豆国产欧美日韩综合精品二区| 欧美精品一区二区三| 成人小视频免费观看| 自拍偷拍国产亚洲| 欧美日韩日本视频| 国产一区二区三区免费播放| 国产精品盗摄一区二区三区| 欧美日韩一区成人| 国产69精品久久99不卡| 亚洲精品第1页| 久久夜色精品一区| 色999日韩国产欧美一区二区| 日韩电影在线观看电影| 欧美国产精品中文字幕| 欧美久久久久久久久中文字幕| 韩国成人在线视频| 亚洲精品一二三区| 久久久影院官网| 在线观看www91| 国产精品一区一区| 午夜国产不卡在线观看视频| 久久伊99综合婷婷久久伊| 91丨九色丨尤物| 国产又黄又大久久| 午夜精品福利一区二区三区蜜桃| 国产亚洲精品福利| 欧美日韩国产中文| 色综合天天综合网天天看片| 老司机午夜精品99久久| 伊人色综合久久天天| 国产日产欧美一区二区三区| 欧美中文字幕一区| 成人黄页在线观看| 国产麻豆9l精品三级站| 日韩在线播放一区二区| 亚洲少妇最新在线视频| 国产日韩视频一区二区三区| 欧美一区在线视频| 91成人在线精品| 99久久777色| 国产成人自拍在线| 极品美女销魂一区二区三区免费| 亚洲精品中文在线影院| 国产精品国产成人国产三级| 日韩美女天天操| 正在播放一区二区| 欧美群妇大交群中文字幕| 在线视频国内一区二区| 色综合久久综合中文综合网| fc2成人免费人成在线观看播放| 激情小说欧美图片| 久久爱www久久做| 精品伊人久久久久7777人| 日韩精品久久久久久| 亚洲va在线va天堂| 亚洲va欧美va国产va天堂影院| 亚洲欧美日韩中文字幕一区二区三区 | 久久久久久麻豆| 久久蜜桃香蕉精品一区二区三区| 精品久久久久久最新网址| 日韩欧美中文字幕制服| 日韩午夜av电影| 日韩精品综合一本久道在线视频| 日韩一区二区视频在线观看| 日韩一区二区三免费高清| 日韩视频免费观看高清在线视频| 日韩一卡二卡三卡国产欧美| 91精品国模一区二区三区| 欧美二区乱c少妇| 欧美一级电影网站| 日韩限制级电影在线观看| 精品乱人伦小说| 久久久噜噜噜久噜久久综合| 欧美精品一区二区三区四区| 久久在线观看免费| 国产精品久久毛片| 亚洲一区二三区| 免费在线成人网| 国产一区二区三区香蕉| 国产成人av网站| 色香色香欲天天天影视综合网 | 91麻豆精品视频| 欧美日本在线观看| 精品国产乱码久久久久久1区2区 | 日韩精品一区二区在线| 久久综合给合久久狠狠狠97色69| 国产欧美一区二区三区在线看蜜臀 | 亚洲午夜久久久久中文字幕久| 日韩制服丝袜av| 国产高清在线精品| 91猫先生在线| 在线不卡中文字幕播放| 久久久久国产精品人| ●精品国产综合乱码久久久久| 亚洲国产一区二区三区青草影视 | 欧美国产丝袜视频| 亚洲国产视频a| 久久99国产精品免费网站| 国产.精品.日韩.另类.中文.在线.播放| 色哟哟亚洲精品| 精品欧美乱码久久久久久1区2区| 国产精品色在线| 奇米影视在线99精品| 成人av网站免费| 日韩一二在线观看| 1024亚洲合集| 韩国女主播成人在线| 色乱码一区二区三区88| 精品福利二区三区| 亚洲第一会所有码转帖| 国产老女人精品毛片久久| 欧美影院一区二区三区| 国产日韩欧美一区二区三区综合| 亚洲狠狠爱一区二区三区| 国产盗摄一区二区| 91精品午夜视频| 亚洲精选一二三| 国产精品亚洲视频| 91精品国产免费| 亚洲最色的网站| 成人av电影免费在线播放| 日韩一区二区在线看| 亚洲线精品一区二区三区八戒| 国产老女人精品毛片久久| 欧美一区二区三区免费在线看| 亚洲免费观看高清完整版在线| 精品无人码麻豆乱码1区2区| 欧美视频中文字幕| 亚洲三级电影网站| 国产成人超碰人人澡人人澡| 日韩欧美一卡二卡| 日韩黄色免费电影| 日本韩国视频一区二区| 国产精品日韩精品欧美在线| 国产综合色产在线精品| 日韩欧美国产一区二区在线播放| 久久精品在这里| 亚洲欧美二区三区| 成人av午夜影院| 久88久久88久久久| 精品盗摄一区二区三区| 欧美不卡一区二区三区| 亚洲chinese男男1069| 色综合天天性综合| 亚洲色图欧美激情| av一本久道久久综合久久鬼色| 国产亚洲欧美一区在线观看| 久久成人免费网| 精品国产成人系列| 国产精品中文字幕日韩精品| 久久你懂得1024| 风间由美一区二区av101| 国产亚洲成aⅴ人片在线观看| 国内精品不卡在线| 国产欧美精品在线观看| 国产成人免费av在线| 国产精品美女久久久久久2018| 成人免费毛片片v| 亚洲欧洲国产日韩| 色综合亚洲欧洲| 亚洲成人av一区二区| 欧美精品亚洲二区| 蜜臀av亚洲一区中文字幕| 欧美第一区第二区| 国产成人一级电影| 国产精品美女久久久久av爽李琼 | 99这里都是精品| 亚洲欧美乱综合| 欧美私模裸体表演在线观看| 天天综合色天天| 欧美成人a在线| 国产成人综合在线观看| 最新国产の精品合集bt伙计| 在线欧美日韩精品| 免费看日韩a级影片| 精品国产乱码久久久久久夜甘婷婷 | 日韩一二三区视频| 国产成人免费视频精品含羞草妖精| 国产日韩成人精品| 色欧美乱欧美15图片| 婷婷中文字幕一区三区| 精品国产一区二区精华| 成人黄色av电影| 香港成人在线视频| 久久综合色鬼综合色| 91色porny在线视频|