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

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關(guān)于我們
? 蟲蟲下載站

?? remotemacfinderdlg.cpp

?? 網(wǎng)卡喚醒程序_局域網(wǎng)開機(jī) 需要網(wǎng)卡支持此功能
?? CPP
字號:
// RemoteMacFinderDlg.cpp : implementation file
//

#include "stdafx.h"
#include "RemoteMacFinder.h"
#include "RemoteMacFinderDlg.h"

#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif

/////////////////////////////////////////////////////////////////////////////
// CAboutDlg dialog used for App About

class CAboutDlg : public CDialog
{
public:
	CAboutDlg();

// Dialog Data
	//{{AFX_DATA(CAboutDlg)
	enum { IDD = IDD_ABOUTBOX };
	//}}AFX_DATA

	// ClassWizard generated virtual function overrides
	//{{AFX_VIRTUAL(CAboutDlg)
	protected:
	virtual void DoDataExchange(CDataExchange* pDX);    // DDX/DDV support
	//}}AFX_VIRTUAL

// Implementation
protected:
	//{{AFX_MSG(CAboutDlg)
	//}}AFX_MSG
	DECLARE_MESSAGE_MAP()
};

CAboutDlg::CAboutDlg() : CDialog(CAboutDlg::IDD)
{
	//{{AFX_DATA_INIT(CAboutDlg)
	//}}AFX_DATA_INIT
}

void CAboutDlg::DoDataExchange(CDataExchange* pDX)
{
	CDialog::DoDataExchange(pDX);
	//{{AFX_DATA_MAP(CAboutDlg)
	//}}AFX_DATA_MAP
}

BEGIN_MESSAGE_MAP(CAboutDlg, CDialog)
	//{{AFX_MSG_MAP(CAboutDlg)
		// No message handlers
	//}}AFX_MSG_MAP
END_MESSAGE_MAP()

/////////////////////////////////////////////////////////////////////////////
// CRemoteMacFinderDlg dialog

CRemoteMacFinderDlg::CRemoteMacFinderDlg(CWnd* pParent /*=NULL*/)
	: CDialog(CRemoteMacFinderDlg::IDD, pParent)
{
	//{{AFX_DATA_INIT(CRemoteMacFinderDlg)
	m_hostName = _T("");
	m_foundHost = _T("");
	m_foundIP = _T("");
	m_foundMac = _T("");
	m_mac1 = _T("");
	m_mac2 = _T("");
	m_mac3 = _T("");
	m_mac4 = _T("");
	m_mac5 = _T("");
	m_mac6 = _T("");
	m_strPort = _T("");
	//}}AFX_DATA_INIT
	// Note that LoadIcon does not require a subsequent DestroyIcon in Win32
	m_hIcon = AfxGetApp()->LoadIcon(IDR_MAINFRAME);
}

void CRemoteMacFinderDlg::DoDataExchange(CDataExchange* pDX)
{
	CDialog::DoDataExchange(pDX);
	//{{AFX_DATA_MAP(CRemoteMacFinderDlg)
	DDX_Control(pDX, IDC_IP_ADDRESS, m_ipAddress);
	DDX_Text(pDX, IDC_HOST_NAME, m_hostName);
	DDX_Text(pDX, IDC_F_HOST, m_foundHost);
	DDX_Text(pDX, IDC_F_IP, m_foundIP);
	DDX_Text(pDX, IDC_F_MAC, m_foundMac);
	DDX_Text(pDX, IDC_MAC1, m_mac1);
	DDV_MaxChars(pDX, m_mac1, 2);
	DDX_Text(pDX, IDC_MAC2, m_mac2);
	DDV_MaxChars(pDX, m_mac2, 2);
	DDX_Text(pDX, IDC_MAC3, m_mac3);
	DDV_MaxChars(pDX, m_mac3, 2);
	DDX_Text(pDX, IDC_MAC4, m_mac4);
	DDV_MaxChars(pDX, m_mac4, 2);
	DDX_Text(pDX, IDC_MAC5, m_mac5);
	DDV_MaxChars(pDX, m_mac5, 2);
	DDX_Text(pDX, IDC_MAC6, m_mac6);
	DDV_MaxChars(pDX, m_mac6, 2);
	DDX_Text(pDX, IDC_PORT, m_strPort);
	//}}AFX_DATA_MAP
}

BEGIN_MESSAGE_MAP(CRemoteMacFinderDlg, CDialog)
	//{{AFX_MSG_MAP(CRemoteMacFinderDlg)
	ON_WM_SYSCOMMAND()
	ON_WM_PAINT()
	ON_WM_QUERYDRAGICON()
	ON_BN_CLICKED(IDC_FIND, OnFind)
	ON_BN_CLICKED(IDC_BY_NAME, OnByName)
	ON_BN_CLICKED(IDC_BY_IP, OnByIp)
	ON_EN_CHANGE(IDC_MAC1, OnChangeMac1)
	ON_EN_CHANGE(IDC_MAC2, OnChangeMac2)
	ON_EN_CHANGE(IDC_MAC3, OnChangeMac3)
	ON_EN_CHANGE(IDC_MAC4, OnChangeMac4)
	ON_EN_CHANGE(IDC_MAC5, OnChangeMac5)
	ON_EN_CHANGE(IDC_MAC6, OnChangeMac6)
	ON_BN_CLICKED(IDC_POWER, OnPower)
	//}}AFX_MSG_MAP
END_MESSAGE_MAP()

/////////////////////////////////////////////////////////////////////////////
// CRemoteMacFinderDlg message handlers

BOOL CRemoteMacFinderDlg::OnInitDialog()
{
	CDialog::OnInitDialog();

	// Add "About..." menu item to system menu.

	// IDM_ABOUTBOX must be in the system command range.
	ASSERT((IDM_ABOUTBOX & 0xFFF0) == IDM_ABOUTBOX);
	ASSERT(IDM_ABOUTBOX < 0xF000);

	CMenu* pSysMenu = GetSystemMenu(FALSE);
	if (pSysMenu != NULL)
	{
		CString strAboutMenu;
		strAboutMenu.LoadString(IDS_ABOUTBOX);
		if (!strAboutMenu.IsEmpty())
		{
			pSysMenu->AppendMenu(MF_SEPARATOR);
			pSysMenu->AppendMenu(MF_STRING, IDM_ABOUTBOX, strAboutMenu);
		}
	}

	// Set the icon for this dialog.  The framework does this automatically
	//  when the application's main window is not a dialog
	SetIcon(m_hIcon, TRUE);			// Set big icon
	SetIcon(m_hIcon, FALSE);		// Set small icon
	
	//------------------------------------------------------------------------ My Initializations
	//Check first radio button in group
	CheckRadioButton(IDC_BY_NAME,IDC_BY_IP,IDC_BY_NAME);
	//Disable the other control
	GetDlgItem(IDC_IP_ADDRESS)->EnableWindow(FALSE);
	m_strPort = _T("40000");
	UpdateData(FALSE);
	return TRUE;  // return TRUE  unless you set the focus to a control
}

void CRemoteMacFinderDlg::OnSysCommand(UINT nID, LPARAM lParam)
{
	if ((nID & 0xFFF0) == IDM_ABOUTBOX)
	{
		CAboutDlg dlgAbout;
		dlgAbout.DoModal();
	}
	else
	{
		CDialog::OnSysCommand(nID, lParam);
	}
}

// If you add a minimize button to your dialog, you will need the code below
//  to draw the icon.  For MFC applications using the document/view model,
//  this is automatically done for you by the framework.

void CRemoteMacFinderDlg::OnPaint() 
{
	if (IsIconic())
	{
		CPaintDC dc(this); // device context for painting

		SendMessage(WM_ICONERASEBKGND, (WPARAM) dc.GetSafeHdc(), 0);

		// Center icon in client rectangle
		int cxIcon = GetSystemMetrics(SM_CXICON);
		int cyIcon = GetSystemMetrics(SM_CYICON);
		CRect rect;
		GetClientRect(&rect);
		int x = (rect.Width() - cxIcon + 1) / 2;
		int y = (rect.Height() - cyIcon + 1) / 2;

		// Draw the icon
		dc.DrawIcon(x, y, m_hIcon);
	}
	else
	{
		CDialog::OnPaint();
	}
}

// The system calls this to obtain the cursor to display while the user drags
//  the minimized window.
HCURSOR CRemoteMacFinderDlg::OnQueryDragIcon()
{
	return (HCURSOR) m_hIcon;
}

//------------------------------------------------------------------------My job starts here!
void CRemoteMacFinderDlg::OnOK() 
{
//	CDialog::OnOK();
}

void CRemoteMacFinderDlg::OnCancel() 
{
	//Some cleanup!!
	CDialog::OnCancel();
}

//Start finding
void CRemoteMacFinderDlg::OnFind() 
{
	if (!ValidateInput()) return;
	GetDlgItem(IDC_TEXT)->SetWindowText(_T("Searching, Please wait..."));
	hostent* remoteHost;

	if (GetDlgItem(IDC_HOST_NAME)->IsWindowEnabled()) {		//if name field is enabled (=selected)
		remoteHost = gethostbyname(m_hostName);				//We have to find info by Name
		if (remoteHost)
			gethostbyaddr((char*)*remoteHost->h_addr_list, 4, AF_INET);		//Update ARP Table
	} else {												//We have to find it by IP.
		DWORD	addr;
		m_ipAddress.GetAddress(addr);						//Retreive address from addr. 
															//control on the dialog.
		addr = ntohl(addr);									//GetAddress gives us bytes in 
															//reverse order!
		remoteHost = gethostbyaddr((char *) &addr, 4, AF_INET);
	}

	if (WSAGetLastError() != 0) {							//Some error around!
		if (WSAGetLastError() == 11001)
			AfxMessageBox("Host not found...");
		else {
				CString str;
				str.Format("Error #%ld",WSAGetLastError());
				AfxMessageBox(str);
		}
		GetDlgItem(IDC_TEXT)->SetWindowText(_T("Sorry!,No matches found.\nPlease check your input information and try again."));
		return;
	}

	//We got the host name here!
	if (remoteHost->h_name) m_foundHost = remoteHost->h_name;
	//And the host IP here!
	if (remoteHost->h_addr_list) {
		m_foundIP = inet_ntoa (*(struct in_addr *)*remoteHost->h_addr_list);
	}
	//Lets find MAC now!
	//WARNING: DON'T Call this function alone, It will not work because ARP table will be
	//created temporaryly by OS and this function uses that table!. 
	//Here we created table by calling 'gethostbyaddr' function.
	m_foundMac = FindRemoteMAC(m_foundIP);

	GetDlgItem(IDC_TEXT)->SetWindowText(_T("Congratulations! I found something :)"));
	UpdateData(FALSE);
}
//Find by name, radio
void CRemoteMacFinderDlg::OnByName() 
{
	GetDlgItem(IDC_HOST_NAME)->EnableWindow(TRUE);			//Do some enable/disable play!!!
	GetDlgItem(IDC_IP_ADDRESS)->EnableWindow(FALSE);
	GetDlgItem(IDC_HOST_NAME)->SetFocus();					//Give focus to edit box so that 
															//app. is ready for user!

}
//Find by IP, radio
void CRemoteMacFinderDlg::OnByIp() 
{
	GetDlgItem(IDC_HOST_NAME)->EnableWindow(FALSE);			//Just like above
	GetDlgItem(IDC_IP_ADDRESS)->EnableWindow(TRUE);
	GetDlgItem(IDC_IP_ADDRESS)->SetFocus();
}
//Check and find errors, and inform user about them
BOOL CRemoteMacFinderDlg::ValidateInput()
{
	UpdateData(TRUE);

	if (GetDlgItem(IDC_HOST_NAME)->IsWindowEnabled()) {		//if name field is enabled (=selected)
		if (m_hostName.GetLength()==0) {					//if name field is empty entered
			AfxMessageBox(_T("Please fill in name field with remote computers Host name."));
			return FALSE;
		} else return TRUE;									//if a name entered
	} else {												//if IP field is enabled (=selected)
		if (m_ipAddress.IsBlank()) {					//if name field is empty entered
			AfxMessageBox(_T("Please fill in IP field with remote computers IP."));
			return FALSE;
		} else return TRUE;									//if IP entered
		return TRUE;
	}
}

	//WARNING: DON'T Call this function alone, It will not work because ARP table will be
	//created temporaryly by OS and this function uses that table!. 
	//Here we created table by calling 'gethostbyaddr' function.

//Gets an IP as input (like: _T("192.168.1.5") ) and returns relevant MAC
//like( _T("00 - 03 - ff - 49 - 4f - 50") )
CString CRemoteMacFinderDlg::FindRemoteMAC(CString IP)
{
	DWORD dwRetVal;
	PMIB_IPNETTABLE pIPNetTable;
	DWORD dwSize = 0;
	CString res =_T(""),
			strTmp=_T("");

	if (IP==_T("127.0.0.1")) return _T("Can't return local MAC address! Use 'MacFinder' from 'www.CodeProject.com' instead.");
	//Function added to dll as a resource (I guess!!)
	hIpHlpApi = LoadLibrary(_T("iphlpapi.dll"));

	//Finding function
	m_pGetIpNetTable = 
		(lpfnGetIpNetTable)GetProcAddress(hIpHlpApi,"GetIpNetTable");

	//if it can't be found
	if (!hIpHlpApi) {
		AfxMessageBox(_T("Unable to link to module"));
		goto RET;
	}

	pIPNetTable = (MIB_IPNETTABLE*) malloc( sizeof( MIB_IPNETTABLE) );

	// Make an initial call to GetIpAddrTable to get the
	// necessary size into the dwSize variable
	if ( (dwRetVal=m_pGetIpNetTable(pIPNetTable, &dwSize, 0)) == ERROR_INSUFFICIENT_BUFFER) {
	  free( pIPNetTable );
	  pIPNetTable = (MIB_IPNETTABLE *) malloc ( dwSize );
	} else {
		CString strErr;
		LPVOID lpMsgBuf;
		switch(dwRetVal) {
			case ERROR_INVALID_PARAMETER: AfxMessageBox(_T("unable to write to memory.")); break;
			case ERROR_NOT_SUPPORTED: AfxMessageBox(_T("This function is not supported on the operating system in use on the local system.")); break;
			default: {
				if (!FormatMessage( 
					FORMAT_MESSAGE_ALLOCATE_BUFFER | 
					FORMAT_MESSAGE_FROM_SYSTEM | 
					FORMAT_MESSAGE_IGNORE_INSERTS,
					NULL,
					WSAGetLastError(),
					MAKELANGID(LANG_NEUTRAL, SUBLANG_DEFAULT), // Default language
					(LPTSTR) &lpMsgBuf,
					0,
					NULL ))	{   // Handle this error.in error handling!!! your self please.
								goto RET;
				}
				AfxMessageBox((LPCTSTR)lpMsgBuf);
				LocalFree( lpMsgBuf );
			}//default
		}//switch
	}//else

	// Make a second call to GetIpAddrTable to get the
	// actual data we want
	if ( (dwRetVal = m_pGetIpNetTable( pIPNetTable, &dwSize, 0 )) == NO_ERROR ) {
		for (UINT i=0;i<pIPNetTable->dwNumEntries;i++) {
			if ((pIPNetTable->table[i].dwAddr) == inet_addr(IP)) {
				BYTE *pt = (BYTE*)&pIPNetTable->table[i].bPhysAddr;
				for (int j=0;j<6;j++) {
					strTmp.Format("%02x",*pt++);
					res+=strTmp;
					if (j<5) res+=" - ";
				}
				goto RET;
			}
		}
	} else {
		CString strErr;
		switch(dwRetVal) {
			case ERROR_INVALID_PARAMETER: AfxMessageBox(_T("unable to write to memory.")); break;
			case ERROR_NOT_SUPPORTED: AfxMessageBox(_T("This function is not supported on the operating system in use on the local system.")); break;
			default: {
				TRACE(_T("\nError:  %d\n"),GetLastError());
				goto RET;
			}
		}
	}
RET:;
	//Cleanup
	free( pIPNetTable );
	FreeLibrary(hIpHlpApi);
	pIPNetTable = NULL;
	return res;
}

void CRemoteMacFinderDlg::OnChangeMac1() 
{
	UpdateData(TRUE);
	if (m_mac1.GetLength()==2) ManageFocus();
}

void CRemoteMacFinderDlg::OnChangeMac2() 
{
	
	UpdateData(TRUE);
	if (m_mac2.GetLength()==2) ManageFocus();
}

void CRemoteMacFinderDlg::OnChangeMac3() 
{
	UpdateData(TRUE);
	if (m_mac3.GetLength()==2) ManageFocus();
	
}

void CRemoteMacFinderDlg::OnChangeMac4() 
{
	UpdateData(TRUE);
	if (m_mac4.GetLength()==2) ManageFocus();
}

void CRemoteMacFinderDlg::OnChangeMac5() 
{
	UpdateData(TRUE);
	if (m_mac5.GetLength()==2) ManageFocus();
	
}

void CRemoteMacFinderDlg::OnChangeMac6() 
{
	UpdateData(TRUE);
	if (m_mac6.GetLength()==2) ManageFocus();
	
}

void CRemoteMacFinderDlg::ManageFocus()
{
	CWnd* wN = GetNextDlgTabItem(GetFocus());
	wN->SetFocus();
	wN->SendMessage(EM_SETSEL,0,1024);

}

UINT CRemoteMacFinderDlg::HexStrToInt(CString hexStr)
{
	char *stop;
	char  num[3];
	UINT res = 0;
	
	//Nothing happens if return 0, just server will not wakeup
	if (hexStr.GetLength()>2) {
		TRACE(_T("(Length) Invalid Input!"));
		return 0;		//or perhaps exit;
	}
	
	memset(num,'\0',3);
	
	//In Unicode it's: wcscpy
	strcpy(num,hexStr);
	//In Unicode it's: wcstol
	res = strtol(num,&stop,16);
	
	if (res==LONG_MAX || res==LONG_MIN || res==0) {
		TRACE(_T("(OverFlow) Invalid Input!"));
		return 0;		//or perhaps exit;
	}
	return res;

}

void CRemoteMacFinderDlg::OnPower() 
{
	//User Input
	UpdateData(TRUE);
	//Socket to send magic packet
	CAsyncSocket s;
	//Buffer for packet
	BYTE magicP[102];
	
	//Validate Input data
	if ( m_mac1==_T("") || m_mac2==_T("") || m_mac3==_T("") ||
		m_mac4==_T("") || m_mac5==_T("") || m_mac6==_T("")) {
		AfxMessageBox(_T("You should fill in all fields"));
		return;
	}
	//Create a string containing all numbers (12 charachter)
	CString macAddr = m_mac1+m_mac2+m_mac3+m_mac4+m_mac5+m_mac6;
	
	//   Fill in magic packet with 102 Bytes of data
	//Header
	//fill 6 Bytes with 0xFF
	for (int i=0;i<6;i++)
		magicP[i] = 0xff;
	
	//First 6 bytes (these must be repeated!!)
	//fill bytes 6-12
	for (i=0;i<6;i++) {
		//Get 2 charachters from mac address and convert it to int to fill
		//magic packet
		magicP[i+6] = HexStrToInt(macAddr.Mid(i*2,2));
	}
	
	//fill remaining 90 bytes (15 time repeat)
	//Warning : It is higly recommended not to use functions like
	//memcpy, read MSDN for more details.
	for (i=0;i<15;i++) memcpy(&magicP[(i+2)*6],&magicP[6],6);
	
	//Create a socket to send data
	s.Create(atol(m_strPort),SOCK_DGRAM);
	//Customize socket to BROADCAST
	BOOL bOptVal = TRUE;
	if (s.SetSockOpt(SO_BROADCAST,(char*)&bOptVal,sizeof(BOOL))==SOCKET_ERROR) 
		return;
	
	//Broadcast Magic Packet, Hope appropriate NIC will take it ;)
	s.SendTo(magicP,102,atol(m_strPort));
	
	TRACE(_T("Magic packet sent.Remote computer should turn on now."));
	
	//Close the socket and release all buffers
	s.Close();
	// TODO: Add your control notification handler code here
	
}

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
国产v日产∨综合v精品视频| 中国av一区二区三区| 久久精品夜色噜噜亚洲a∨| 一级特黄大欧美久久久| 国产一区二区三区四| 欧美日韩免费视频| 亚洲国产精品黑人久久久| 日本亚洲一区二区| 欧美在线观看一区| 国产精品热久久久久夜色精品三区| 日韩成人dvd| 91蜜桃免费观看视频| 国产亚洲成aⅴ人片在线观看| 日日骚欧美日韩| 色素色在线综合| 国产精品麻豆99久久久久久| 亚洲精品国产成人久久av盗摄| 欧美高清视频在线高清观看mv色露露十八| 国产精品妹子av| 精品系列免费在线观看| 精品在线你懂的| 91麻豆蜜桃一区二区三区| 色拍拍在线精品视频8848| 91精品国产综合久久婷婷香蕉| 精品国产不卡一区二区三区| 亚洲日本在线视频观看| 国产在线精品一区在线观看麻豆| 欧美一级片在线观看| 亚洲成人一区二区在线观看| 91美女视频网站| 国产精品久久久久久久久图文区 | 欧美军同video69gay| 亚洲日本在线天堂| av激情综合网| 国产精品电影院| 粉嫩av一区二区三区在线播放| 久久综合九色综合欧美就去吻| 奇米影视一区二区三区| 91麻豆精品国产91| 日韩精品91亚洲二区在线观看| 欧美亚一区二区| 亚洲午夜久久久久久久久久久| 99久久精品99国产精品| 国产精品久久久久aaaa| 成人avav影音| 最新久久zyz资源站| 99国产精品久久久久| 国产精品国产三级国产| gogogo免费视频观看亚洲一| 国产精品色婷婷| av不卡在线播放| 亚洲激情校园春色| 在线免费不卡视频| 亚洲一区二区三区四区在线观看 | 91久久久免费一区二区| 一区二区三区中文字幕| 色哟哟一区二区三区| 亚洲女性喷水在线观看一区| 色琪琪一区二区三区亚洲区| 亚洲成人自拍一区| 日韩一区二区三区电影在线观看| 久久成人羞羞网站| 久久免费电影网| 福利91精品一区二区三区| 国产精品久久免费看| 91免费观看在线| 午夜久久福利影院| 日韩欧美中文字幕一区| 国产乱理伦片在线观看夜一区| 国产欧美在线观看一区| 97久久超碰精品国产| 亚洲一二三专区| 日韩一区二区三区免费看 | 美女视频一区二区| 久久嫩草精品久久久精品一| 成人免费毛片app| 亚洲午夜羞羞片| 日韩欧美一级特黄在线播放| 国产精品一区二区三区乱码| 国产精品福利一区二区三区| 欧美在线你懂的| 毛片不卡一区二区| 久久久久久日产精品| 91丝袜呻吟高潮美腿白嫩在线观看| 一区二区三区中文字幕电影 | 91亚洲精华国产精华精华液| 亚洲成a人片在线不卡一二三区| 日韩三级免费观看| 不卡视频在线观看| 午夜亚洲福利老司机| 精品成人私密视频| 色综合久久综合网| 日韩不卡一区二区三区| 欧美极品美女视频| 欧洲亚洲精品在线| 久久99精品一区二区三区三区| 中文字幕乱码亚洲精品一区| 欧美日本一区二区三区四区| 国产福利一区二区| 亚洲国产综合在线| 久久久久综合网| 欧美午夜寂寞影院| 国产精品系列在线观看| 亚洲二区在线观看| 国产欧美日本一区视频| 欧美日韩另类国产亚洲欧美一级| 国产麻豆9l精品三级站| 亚洲国产欧美在线人成| 国产亚洲成aⅴ人片在线观看 | 成人午夜大片免费观看| 日韩福利视频导航| 亚洲欧美中日韩| 日韩欧美三级在线| 日本久久电影网| 国产成人亚洲综合色影视| 午夜精品一区二区三区三上悠亚| 国产欧美日韩另类一区| 91麻豆精品国产91久久久使用方法 | 日本成人在线网站| 亚洲精选视频在线| 久久女同精品一区二区| 91精品国产麻豆| 色婷婷综合久久| 成人性视频网站| 久久精品国产澳门| 亚洲无人区一区| 亚洲麻豆国产自偷在线| 精品国产乱码久久久久久久久| 欧美日韩一区不卡| 91在线观看视频| 成人黄色综合网站| 激情伊人五月天久久综合| 午夜精品视频一区| 樱花影视一区二区| 日本一区二区三区dvd视频在线 | 99久久国产综合精品色伊| 激情综合色播五月| 日韩成人免费电影| 亚欧色一区w666天堂| 亚洲欧美色综合| 国产精品九色蝌蚪自拍| 国产欧美视频一区二区三区| 亚洲精品一区二区三区四区高清| 欧美久久一二区| 欧美日韩在线亚洲一区蜜芽| 色菇凉天天综合网| 91亚洲大成网污www| 97se狠狠狠综合亚洲狠狠| 高清av一区二区| 成人性生交大片免费看中文 | 蜜桃传媒麻豆第一区在线观看| 亚洲第四色夜色| 亚洲第一成年网| 香蕉加勒比综合久久| 亚洲国产成人高清精品| 一区二区成人在线| 亚洲国产精品久久人人爱| 亚洲综合激情另类小说区| 亚洲激情自拍视频| 亚洲一区在线看| 亚洲一区二区三区视频在线| 一区二区三区加勒比av| 一区二区三区在线观看视频| 亚洲精品乱码久久久久久日本蜜臀| 国产精品久久久久久久久快鸭| 中文一区在线播放| 国产精品超碰97尤物18| 一区精品在线播放| 国产精品第一页第二页第三页| 中文字幕一区在线| 亚洲欧美福利一区二区| 一区二区三区中文字幕精品精品| 亚洲自拍欧美精品| 日韩激情在线观看| 久久精品国产亚洲一区二区三区 | 中文字幕一区二区三区乱码在线| 国产精品久久777777| 亚洲免费观看高清完整| 亚洲精品成人精品456| 亚洲v中文字幕| 久久se精品一区精品二区| 国产麻豆一精品一av一免费| 成人做爰69片免费看网站| 91丨九色porny丨蝌蚪| 精品视频一区二区不卡| 91麻豆精品国产91久久久久久 | 欧美丰满嫩嫩电影| 精品国产免费人成电影在线观看四季| 欧美www视频| 欧美激情中文字幕一区二区| 亚洲免费观看高清完整| 日韩经典中文字幕一区| 国产成人免费视频网站高清观看视频| 成人免费毛片a| 欧美精品自拍偷拍| 26uuu国产一区二区三区| 国产精品国产三级国产aⅴ入口 | 亚洲天堂成人网| 婷婷综合另类小说色区| 久久99久久精品|