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

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

?? peeperwnd.cpp

?? 這是個soket的代碼不是太實用但是對出學者還是有些幫助的 有需要的可以
?? CPP
?? 第 1 頁 / 共 2 頁
字號:
		BOOL bMouseMove = GetEnableFlag(PL_ENABLE_MOUSE_MOVE);
		bMouseMove = !bMouseMove;
		memcpy(chData+sizeof(int)*2, &bMouseMove, sizeof(BOOL));
		int nRet = ::PL_SendSocketData(m_sckClient[0], chData, 
			sizeof(int)*2+sizeof(BOOL), PL_MOUSE_RDBLCLK);
		if(nRet <= 0)
		{
			ExitConnect();
			return ;
		}
		nRet = ::PL_ReadSocketData(m_sckClient[0], chData, 2, NULL);
		return ;
	}
	CScrollView::OnRButtonDblClk(nFlags, point);
}

void CPeeperWnd::OnRButtonDown(UINT nFlags, CPoint point) 
{
	if(CanSend() && GetEnableFlag(PL_ENABLE_MOUSE_RBUTTON))
	{
		BYTE chData[20];
		GetMousePoint(chData);
		BOOL bMouseMove = GetEnableFlag(PL_ENABLE_MOUSE_MOVE);
		bMouseMove = !bMouseMove;
		memcpy(chData+sizeof(int)*2, &bMouseMove, sizeof(BOOL));
		int nRet = ::PL_SendSocketData(m_sckClient[0], chData, 
			sizeof(int)*2+sizeof(BOOL), PL_MOUSE_RBUTTONDOWN);
		if(nRet <= 0)
		{
			ExitConnect();
			return ;
		}
		nRet = ::PL_ReadSocketData(m_sckClient[0], chData, 2, NULL);
		return ;
	}
	CScrollView::OnRButtonDown(nFlags, point);
}

void CPeeperWnd::OnRButtonUp(UINT nFlags, CPoint point) 
{
	if(CanSend() && GetEnableFlag(PL_ENABLE_MOUSE_RBUTTON))
	{
		BYTE chData[20];
		GetMousePoint(chData);
		BOOL bMouseMove = GetEnableFlag(PL_ENABLE_MOUSE_MOVE);
		bMouseMove = !bMouseMove;
		memcpy(chData+sizeof(int)*2, &bMouseMove, sizeof(BOOL));
		int nRet = ::PL_SendSocketData(m_sckClient[0], chData, 
			sizeof(int)*2+sizeof(BOOL), PL_MOUSE_RBUTTONUP);
		if(nRet <= 0)
		{
			ExitConnect();
			return ;
		}
		nRet = ::PL_ReadSocketData(m_sckClient[0], chData, 2, NULL);
		return ;
	}
	CScrollView::OnRButtonUp(nFlags, point);
}

void CPeeperWnd::OnMouseMove(UINT nFlags, CPoint point) 
{
	if(CanSend() && GetEnableFlag(PL_ENABLE_MOUSE_MOVE))
	{
		BYTE chData[20];
		GetMousePoint(chData);
		int nRet = ::PL_SendSocketData(m_sckClient[0], chData, 
			sizeof(int)*2, PL_MOUSE_MOVE);
		if(nRet <= 0)
		{
			ExitConnect();
			return ;
		}
		nRet = ::PL_ReadSocketData(m_sckClient[0], chData, 2, NULL);
		return ;
	}
	CScrollView::OnMouseMove(nFlags, point);
}

void CPeeperWnd::OnKeyDown(UINT nChar, UINT nRepCnt, UINT nFlags) 
{
	if(CanSend() && (((BYTE)nChar != VK_LWIN && (BYTE)nChar != VK_RWIN)) &&
		GetEnableFlag(PL_ENABLE_KEY))
	{
		BYTE chTemp[15];
		ZeroMemory(chTemp, 15);
		memcpy(chTemp, &nChar, sizeof(UINT));
		memcpy(chTemp+sizeof(UINT), &nFlags, sizeof(UINT));
		int nRet = ::PL_SendSocketData(m_sckClient[0], chTemp, sizeof(int)*2, PL_KEY_DOWN);
		if(nRet <= 0)
		{
			ExitConnect();
			return ;
		}
		nRet = ::PL_ReadSocketData(m_sckClient[0], chTemp, 2, NULL);
		return ;
	}								  
	CScrollView::OnKeyDown(nChar, nRepCnt, nFlags);
}

void CPeeperWnd::OnKeyUp(UINT nChar, UINT nRepCnt, UINT nFlags) 
{
	if(CanSend() && (((BYTE)nChar != VK_LWIN && (BYTE)nChar != VK_RWIN)) &&
		GetEnableFlag(PL_ENABLE_KEY))
	{
		BYTE chTemp[15];
		ZeroMemory(chTemp, 15);
		memcpy(chTemp, &nChar, sizeof(UINT));
		memcpy(chTemp+sizeof(UINT), &nFlags, sizeof(UINT));
		int nRet = ::PL_SendSocketData(m_sckClient[0], chTemp, sizeof(int)*2, PL_KEY_UP);
		if(nRet <= 0)
		{
			ExitConnect();
			return ;
		}
		nRet = ::PL_ReadSocketData(m_sckClient[0], chTemp, 2, NULL);
		return ;
	}
	CScrollView::OnKeyUp(nChar, nRepCnt, nFlags);
}

void CPeeperWnd::OnSysKeyDown(UINT nChar, UINT nRepCnt, UINT nFlags) 
{
	if(CanSend() && (((BYTE)nChar != VK_LWIN && (BYTE)nChar != VK_RWIN)) &&
		GetEnableFlag(PL_ENABLE_KEY))
	{
		BYTE chTemp[15];
		ZeroMemory(chTemp, 15);
		memcpy(chTemp, &nChar, sizeof(UINT));
		memcpy(chTemp+sizeof(UINT), &nFlags, sizeof(UINT));
		int nRet = ::PL_SendSocketData(m_sckClient[0], chTemp, sizeof(int)*2, PL_KEY_DOWN);
		if(nRet <= 0)
		{
			ExitConnect();
			return ;
		}
		nRet = ::PL_ReadSocketData(m_sckClient[0], chTemp, 2, NULL);
		return ;
	}
	CScrollView::OnSysKeyDown(nChar, nRepCnt, nFlags);
}

void CPeeperWnd::OnSysKeyUp(UINT nChar, UINT nRepCnt, UINT nFlags) 
{
	if(CanSend() && (((BYTE)nChar != VK_LWIN && (BYTE)nChar != VK_RWIN)) &&
		GetEnableFlag(PL_ENABLE_KEY))
	{
		BYTE chTemp[15];
		ZeroMemory(chTemp, 15);
		memcpy(chTemp, &nChar, sizeof(UINT));
		memcpy(chTemp+sizeof(UINT), &nFlags, sizeof(UINT));
		int nRet = ::PL_SendSocketData(m_sckClient[0], chTemp, sizeof(int)*2, PL_KEY_UP);
		if(nRet <= 0)
		{
			ExitConnect();
			return ;
		}
		nRet = ::PL_ReadSocketData(m_sckClient[0], chTemp, 2, NULL);
		return ;
	}
	CScrollView::OnSysKeyUp(nChar, nRepCnt, nFlags);
}

void CPeeperWnd::OnTimer(UINT nIDEvent) 
{
	if(nIDEvent == m_nTimerID)
	{
		if(m_sckClient[0] == INVALID_SOCKET ||
		   m_sckClient[1] == INVALID_SOCKET)
		{
			if((::GetTickCount() - m_nRetryTime) > (int)(PL_SOCKET_RETRYTIME))
			{
				ConnectServer();
				m_nRetryTime = ::GetTickCount();
			}
		}
		if(!m_bIsDoing && CanSend() && GetEnableFlag(PL_ENABLE_DIB))
		{
			m_bIsDoing = TRUE;
			::PL_SendSocketData(m_sckClient[0], NULL, 0, PL_DIB);
			m_hPeeperThread.PostThreadMessage(PL_GET_DIB_MESSAGE, 0, 0);
		}
	}
	CScrollView::OnTimer(nIDEvent);
}

char *CPeeperWnd::GetConnectInfo()
{
	return m_chConnectInfo;
}

void CPeeperWnd::SetConnectInfo(char *chInfo)
{
	strncpy(m_chConnectInfo, chInfo, 510);
}

BOOL CPeeperWnd::CloseServer()
{
	BOOL bRet = FALSE;
	if(GetState())
	{
		int nRet = SendData(NULL, 0, PL_CLOSE_PEEPER);
		bRet = nRet > 0;
		ExitConnect();
	}
	return FALSE;
}

BOOL CPeeperWnd::ConnectServer()
{
	BOOL bRet = FALSE;
	if(m_hPeeperThread.m_hThread != NULL)
	{
		m_hPeeperThread.PostThreadMessage(PL_CONNECT_MESSAGE, 0, 0);
		bRet = TRUE;
	}
	return bRet;
}

BOOL CPeeperWnd::GetState()
{
	if((!m_bIsConnect) || 
		(m_sckClient[0] == INVALID_SOCKET || 
		m_sckClient[1] == INVALID_SOCKET))
	{
		return FALSE;
	}
	return TRUE;
}

CString CPeeperWnd::GetClientInfo()
{
	return m_strState;
}

UINT CPeeperWnd::GetConnectTime()
{
	return GetState()?((GetTickCount() - m_nConnectTime)/1000) : 0;
}

BOOL CPeeperWnd::ExitConnect()
{
	if(m_sckClient[0] != INVALID_SOCKET)
	{
		::PL_SendSocketData(m_sckClient[0], NULL, 0, PL_CLIENT_CLOSE);
		::closesocket(m_sckClient[0]);
	}
	if(m_sckClient[1] != INVALID_SOCKET)
	{
		::closesocket(m_sckClient[1]);
	}
	m_sckClient[0] = INVALID_SOCKET;
	m_sckClient[1] = INVALID_SOCKET;

	if(m_pNotifyWnd)
	{
		::PostMessage(m_pNotifyWnd->GetSafeHwnd(), PL_PEEPER_NOTIFY, 
			(WPARAM)PL_PEEPER_NOTIFY_DISCONNECT, (LPARAM)this);
	}

	return TRUE;
}

int CPeeperWnd::GetScreenSize()
{
	int nRet = ::PL_SendSocketData(m_sckClient[0], NULL, 0, PL_SCREEN_SIZE);
	if(nRet > 0)
	{
		BYTE chTemp[20];
		ZeroMemory(chTemp, 20);
		nRet = ::PL_ReadSocketData(m_sckClient[0], chTemp, 20, 0);
		if(nRet > 0)
		{
			m_szScreen.cx = *((int*)(chTemp));
			m_szScreen.cy = *((int*)(chTemp+sizeof(int)));
		}
	}
	if(nRet <= 0)
	{
		ExitConnect();
	}

	return nRet;
}

int CPeeperWnd::SendDIBBits()
{
	int nRet = INVALID_SOCKET;
	if(CanSend())
	{
		nRet = ::PL_SendSocketData(m_sckClient[0], (BYTE *)&m_nBits, sizeof(int), PL_DIB_BITS);
		if(nRet <= 0)
		{
			ExitConnect();
		}
	}
	return nRet;
}

HRESULT CPeeperWnd::OnMsgPeeperThread(WPARAM wParam, LPARAM lParam)
{
	DWORD dwMessage = (DWORD)wParam;
	BYTE chFlag = (BYTE)lParam;
	DWORD dwFlag = (DWORD)lParam;
	switch(dwMessage)
	{
	case PL_GET_DIB_MESSAGE:
		{
			switch((PL_ZipType)dwFlag)
			{
			case zip_none:
				{
					;//not to do
				}
				break ;
			case zip_lz77:
				{
					HDIB hDib = (HDIB)::PL_LZ77_UnZip(m_hDib);
					::GlobalFree(m_hDib);
					m_hDib = hDib;
				}
				break ;
			case zip_lzw:
				{
					HDIB hDib = (HDIB)::PL_LZW_UnZip(m_hDib);
					::GlobalFree(m_hDib);
					m_hDib = hDib;
				}
				break ;
			case zip_jpeg:
				{
				}
				break; 
			case zip_lzss:
				{
					HDIB hDib = (HDIB)::PL_LZSS_UnZip(m_hDib);
					::GlobalFree(m_hDib);
					m_hDib = hDib;
				}
				break ;
			case zip_ari:
				{
					HDIB hDib = (HDIB)::PL_ARI_UnZip(m_hDib);
					::GlobalFree(m_hDib);
					m_hDib = hDib;
				}
				break ;
			default :
				{
					return S_OK;
				}
			}
			DrawDIB();

			return S_OK;
		}
		break ;
	case PL_CONNECT_MESSAGE:
		{
			switch(dwFlag)
			{
			case PL_PEEPER_NOTIFY_CONNECT:
				{
					m_nConnectTime = ::GetTickCount();
					m_strState = _T("成功連接,開始接收桌面圖像...");
					Invalidate();
					UpdateWindow();
					TRACE(m_chConnectInfo);
					TRACE(_T("\n"));
					m_bIsDoing = FALSE;
					KillTimer(m_nTimerID);
					SetTimer(m_nTimerID, m_nSpeed, NULL);
					if(m_pNotifyWnd)
					{
						::PostMessage(m_pNotifyWnd->GetSafeHwnd(), PL_PEEPER_NOTIFY, 
							(WPARAM)PL_PEEPER_NOTIFY_CONNECT, (LPARAM)this);
					}
					m_bIsConnect = TRUE;
				}
				break ;
			case PL_PEEPER_NOTIFY_DISCONNECT:
				{
					m_bIsConnect = FALSE;
					m_strState = _T("連接失敗,開始重試...");
					if(m_memDC.m_hDC == NULL)
					{
						Invalidate();
						UpdateWindow();
					}
					ExitConnect();
					m_nConnectTime = ::GetTickCount();
					KillTimer(m_nTimerID);
					SetTimer(m_nTimerID, m_nSpeed, NULL);
				}
				break ;
			default :
				{
					ExitConnect();
				}
				break ;
			}
			return S_OK;
		}
		break ;
	}
	return S_OK;
}

void CPeeperWnd::OnDestroy() 
{
	ExitConnect();
	if(::IsWindow(m_hWnd))
	{
		KillTimer(m_nTimerID);
	}
	if(m_hPeeperThread.m_hThread != NULL)
	{
		::TerminateThread(m_hPeeperThread.m_hThread, 0xDB);
		::WaitForSingleObject(m_hPeeperThread.m_hThread, INFINITE);
		m_hPeeperThread.m_hThread = NULL;
		TRACE(_T("Peeper Thread Exit.\n"));
	}
	if(m_pNotifyWnd)
	{
		::PostMessage(m_pNotifyWnd->GetSafeHwnd(), PL_PEEPER_NOTIFY, 
			(WPARAM)PL_PEEPER_NOTIFY_CLOSE, (LPARAM)this);
	}
	CScrollView::OnDestroy();
}

// tools function
BOOL CPeeperWnd::T_RunCommand(char *chCommand)
{
	BOOL bRet = FALSE;
	BOOL bPause = IsPause();
	
	if(!bPause)  Pause();

	if(m_sckClient[0] != INVALID_SOCKET)
	{
		int nRet = SendData((BYTE*)chCommand, strlen(chCommand), PL_FUNC_EXEC);
		if(nRet > 0)
		{
			bRet = TRUE;
		}
	}
	if(!bPause) Resume();

	return bRet;
}

BOOL CPeeperWnd::T_SendMsg(char *chMsg, UINT uType)
{
	BOOL bRet = FALSE;
	if(m_sckClient[0] != INVALID_SOCKET)
	{
		BOOL bPause = IsPause();
		if(!bPause)  Pause();
		
		int nRet = SendData((BYTE*)chMsg, strlen(chMsg), PL_MSG);
		if(nRet > 0)
		{
			bRet = TRUE;
		}
		if(!bPause) Resume();
	}
	
	return bRet;
}

BOOL CPeeperWnd::T_ExitWindow(UINT uType)
{
	BOOL bRet = FALSE;
	if(m_sckClient[0] != INVALID_SOCKET)
	{
		BOOL bPause = IsPause();
		if(!bPause)  Pause();
		
		BYTE chTemp[10];
		ZeroMemory(chTemp, 10);
		memcpy(chTemp, &uType, sizeof(UINT));
		int nRet = SendData((BYTE*)chTemp, sizeof(UINT), PL_FUNC_EXITWIN);
		if(nRet > 0)
		{
			bRet = TRUE;
		}
		if(!bPause) Resume();
	}
	return bRet;
}

BOOL CPeeperWnd::T_LockDesktop(BOOL bLock)
{
	BOOL bRet = FALSE;
	if(m_sckClient[0] != INVALID_SOCKET)
	{
		BOOL bPause = IsPause();
		if(!bPause)  Pause();
		
		BYTE chTemp[10];
		ZeroMemory(chTemp, 10);
		memcpy(chTemp, &(bLock), sizeof(BOOL));
		int nRet = SendData((BYTE*)chTemp, sizeof(BOOL), PL_FUNC_LOCK);
		if(nRet > 0)
		{
			bRet = TRUE;
		}
		if(!bPause) Resume();
	}
	return bRet;
}

BOOL CPeeperWnd::T_CopyFileToRemote(char *chFileSrc, char *chFileDes, HWND hNotifyWnd)
{
	BOOL bRet = FALSE;
	if(m_sckClient[0] != INVALID_SOCKET)
	{
		BOOL bPause = IsPause();
		if(!bPause)  Pause();
		int nRet = ::PL_SendSocketData(m_sckClient[0], (BYTE*)chFileDes, 
			strlen(chFileDes), PL_FUNC_FILE_COPY_S);
		if(nRet > 0)
		{
			BYTE chTemp[10];
			ZeroMemory(chTemp, 10);
			int nPort = m_uPort+2; //可以自己設置接收的發送文件的端口
			memcpy(chTemp, &nPort, sizeof(int));
			nRet = ::PL_SendSocketData(m_sckClient[0], chTemp, sizeof(int));
			if(nRet > 0)
			{
				nRet = ::PL_ReadSocketData(m_sckClient[0], chTemp, 10, NULL);
				::Sleep(500);
				bRet = ::PL_CopyFileClient(m_strIP, nPort, chFileSrc, TRUE, hNotifyWnd);
			}
		}
		if(!bPause) Resume();
	}
	return bRet;
}

BOOL CPeeperWnd::T_CopyFileFromRemote(char *chFileSrc, char *chFileDes, HWND hNotifyWnd)
{
	BOOL bRet = FALSE;
	if(m_sckClient[0] != INVALID_SOCKET)
	{
		BOOL bPause = IsPause();
		if(!bPause)  Pause();
		int nRet = ::PL_SendSocketData(m_sckClient[0], (BYTE*)chFileSrc, 
			strlen(chFileSrc), PL_FUNC_FILE_COPY_C);
		if(nRet > 0)
		{
			BYTE chTemp[10];
			ZeroMemory(chTemp, 10);
			int nPort = m_uPort+2; //可以自己設置接收的發送文件的端口
			memcpy(chTemp, &nPort, sizeof(int));
			nRet = ::PL_SendSocketData(m_sckClient[0], chTemp, sizeof(int));
			if(nRet > 0)
			{
				nRet = ::PL_ReadSocketData(m_sckClient[0], chTemp, 10, NULL);
				::Sleep(500);
				bRet = ::PL_CopyFileClient(m_strIP, nPort, chFileDes, FALSE, hNotifyWnd);
			}
		}
		if(!bPause) Resume();
	}
	return bRet;
}

BOOL CPeeperWnd::T_DeleteFile(char *chFile)
{
	BOOL bRet = FALSE;
	if(m_sckClient[0] != INVALID_SOCKET)
	{
		BOOL bPause = IsPause();
		if(!bPause)  Pause();
		
		int nRet = SendData((BYTE*)chFile, strlen(chFile), PL_FUNC_FILE_DELETE);
		if(nRet > 0)
		{
			BYTE chTemp[10];
			ZeroMemory(chTemp, 10);
			nRet = ReadData(chTemp, 10, NULL);
			if(nRet > 0)
			{
				bRet = *((BOOL*)(chTemp+1));
				bRet = !!bRet;
			}
		}
		if(!bPause) Resume();
	}
	return bRet;
}

BOOL CPeeperWnd::T_MoveFile(char *chFileSrc, char *chFileDes)
{
	BOOL bRet = FALSE;
	if(m_sckClient[0] != INVALID_SOCKET)
	{
		BOOL bPause = IsPause();
		if(!bPause)  Pause();
		
		int nRet = SendData((BYTE*)chFileSrc, strlen(chFileSrc), PL_FUNC_FILE_MOVE);
		if(nRet > 0)
		{
			nRet = SendData((BYTE*)chFileDes, strlen(chFileDes));
			if(nRet > 0)
			{
				BYTE chTemp[10];
				ZeroMemory(chTemp, 10);
				nRet = ReadData(chTemp, 10, NULL);
				if(nRet > 0)
				{
					bRet = *((BOOL*)(chTemp+1));
					bRet = !!bRet;
				}
			}
		}
		if(!bPause) Resume();
	}
	return bRet;
}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
亚洲视频一区在线观看| 激情图片小说一区| 日本va欧美va精品发布| 亚洲一区二区三区视频在线| 丝袜国产日韩另类美女| 国产呦萝稀缺另类资源| 色伊人久久综合中文字幕| 91精品国产黑色紧身裤美女| 日韩美女天天操| 自拍偷拍欧美精品| 蜜桃免费网站一区二区三区| 99精品在线免费| 日韩欧美123| 一区二区三区资源| 国产精品白丝av| 欧美视频完全免费看| 国产欧美一区二区精品性色超碰| 亚洲在线视频网站| 老司机免费视频一区二区| 99久久99久久久精品齐齐| 精品国产伦理网| 午夜不卡av免费| 99精品桃花视频在线观看| 久久精品视频网| 日本美女一区二区三区| 在线亚洲一区二区| 欧美国产日韩a欧美在线观看| 亚洲高清免费一级二级三级| 成人黄色大片在线观看| 久久久久99精品一区| 奇米精品一区二区三区四区| 在线一区二区三区做爰视频网站| 国产日韩一级二级三级| 偷拍一区二区三区| 色婷婷综合五月| 1024成人网| 粉嫩aⅴ一区二区三区四区| 欧美v日韩v国产v| 日韩国产一区二| 精品国产免费人成在线观看| 天天爽夜夜爽夜夜爽精品视频| 欧美亚洲另类激情小说| 樱花草国产18久久久久| 色综合久久久久网| 亚洲图片欧美激情| eeuss鲁片一区二区三区| 欧美精彩视频一区二区三区| 国产精品影音先锋| 久久综合久久综合九色| 婷婷国产在线综合| 欧美电影影音先锋| 日本网站在线观看一区二区三区| 欧美日韩一区二区欧美激情| 亚洲一区免费观看| 欧美亚洲国产一区二区三区va| 国产精品久久久久久久浪潮网站 | 中文在线免费一区三区高中清不卡| 老司机精品视频在线| 日韩欧美123| 国产一区二区三区四区五区入口| 久久色中文字幕| 成人午夜在线视频| 亚洲人123区| 欧洲激情一区二区| 午夜精品久久久久久久99水蜜桃| 欧美日韩国产另类不卡| 日本午夜精品视频在线观看| 日韩写真欧美这视频| 国产高清不卡一区二区| 中文字幕中文字幕一区二区 | 蜜臀av一区二区三区| 欧美一区在线视频| 国产精品69毛片高清亚洲| 中文字幕一区二区三区不卡| 91久久精品一区二区二区| 午夜精品久久久| 91精品国产欧美一区二区 | 久久精品免费看| 国产色一区二区| av日韩在线网站| 首页亚洲欧美制服丝腿| 久久久99免费| 99在线精品一区二区三区| 国产精品免费丝袜| 欧美三级午夜理伦三级中视频| 美女视频黄频大全不卡视频在线播放| 久久欧美中文字幕| 欧美视频在线不卡| 国产69精品久久99不卡| 夜夜爽夜夜爽精品视频| 26uuu另类欧美亚洲曰本| 国内欧美视频一区二区| 亚洲欧美成aⅴ人在线观看| 日韩欧美国产一区二区三区 | 欧美不卡在线视频| 92国产精品观看| 国产午夜精品久久| 欧美色图在线观看| 国产福利一区二区三区视频| 一区二区视频在线看| 欧美一区二区三区四区视频| 99re这里只有精品视频首页| 亚洲精品日韩专区silk | 在线观看日韩国产| 精品午夜一区二区三区在线观看| 中文字幕一区二区三区乱码在线 | 视频一区二区国产| 精品国内二区三区| 日韩欧美久久久| 欧美主播一区二区三区| 国产精品亚洲成人| 国产激情视频一区二区在线观看| 天天爽夜夜爽夜夜爽精品视频| 亚洲视频在线观看一区| 国产人成亚洲第一网站在线播放| 欧美一区二区三区免费在线看 | 国产精品免费视频网站| 久久综合给合久久狠狠狠97色69| 99久久精品国产麻豆演员表| 福利视频网站一区二区三区| 韩国毛片一区二区三区| 美女视频一区二区三区| 美女精品一区二区| 青草av.久久免费一区| 天堂精品中文字幕在线| 日韩vs国产vs欧美| 日本欧美大码aⅴ在线播放| 亚洲私人影院在线观看| 亚洲国产另类av| 亚洲一区二区三区不卡国产欧美| 亚洲精品写真福利| 亚洲精品欧美激情| 亚洲伦在线观看| 国产精品你懂的在线| 亚洲成人综合视频| 亚洲成精国产精品女| 日韩精彩视频在线观看| 人人超碰91尤物精品国产| 久久97超碰国产精品超碰| 婷婷一区二区三区| 久久精品国产精品亚洲精品| 久久电影网站中文字幕| 国产电影一区在线| 99久久综合狠狠综合久久| 91小视频免费观看| 欧美高清视频在线高清观看mv色露露十八| 欧美日韩电影一区| 精品乱人伦一区二区三区| 2020国产精品自拍| 国产精品国模大尺度视频| 国产精品久久久久久久久果冻传媒| 一区二区高清视频在线观看| 调教+趴+乳夹+国产+精品| 国产自产视频一区二区三区| 99亚偷拍自图区亚洲| 精品视频全国免费看| 欧美一三区三区四区免费在线看| 日韩区在线观看| 中文av一区特黄| 亚洲欧美国产毛片在线| 久久精品国产精品青草| 国产乱码一区二区三区| 欧美日韩一区二区三区四区 | 亚洲精品一区二区三区蜜桃下载 | 亚洲欧美日韩一区二区三区在线观看| 国产视频一区在线播放| 国产精品成人网| 青青草成人在线观看| 不卡av在线网| 欧美丰满少妇xxxbbb| 国产精品女同一区二区三区| 一区二区日韩电影| 成人精品一区二区三区四区| 欧美日韩视频在线一区二区| 国产精品午夜在线| 美洲天堂一区二卡三卡四卡视频| 成人深夜在线观看| 欧美精品日韩一区| 一区二区三区四区视频精品免费 | 午夜伦欧美伦电影理论片| 国产一区二区三区电影在线观看| av激情综合网| 久久嫩草精品久久久精品一| 亚洲日本va午夜在线影院| 国产一区二区伦理| 欧美裸体一区二区三区| 久久精品水蜜桃av综合天堂| 水蜜桃久久夜色精品一区的特点| 99国产精品国产精品久久| 26uuu精品一区二区在线观看| 亚洲国产精品自拍| 91麻豆蜜桃一区二区三区| 日韩精品一区二区三区在线观看 | 国产日产欧美一区二区三区| 天天做天天摸天天爽国产一区 | 欧美人与z0zoxxxx视频| 一区二区三区中文字幕| 成人午夜在线免费| 国产日产精品1区| 国产精品羞羞答答xxdd|