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

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

?? test.cpp

?? WIN32API+WinSocket文件傳輸,文件傳送程序源碼
?? CPP
字號:
/////////////////////////////////////////////////////////////////////////
//Developed by czk
//Ver: 0.1
//////////////////////////////////////////////////////////////////////////
#pragma comment(lib, "ws2_32.lib")
#include <winsock2.h>
#include <windows.h>
#include <stdio.h> 
#include <tchar.h>

#include "resource.h"
#include "test.h"

BOOL CALLBACK  FileTranDlgProc(HWND, UINT, WPARAM, LPARAM);

int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrev, PSTR szCmdLine, int iCmdShow)
{
	if(-1 ==DialogBox(hInstance, TEXT("FileTranDlg"), NULL, FileTranDlgProc))
		MessageBox(NULL, "程序運行失敗", "沒辦法", MB_OK);

	return 0;
}

BOOL CALLBACK  FileTranDlgProc(HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam)
{
	static HWND hwndSendip, hwndRcvip, hwndText;
	static TCHAR lpstrFileName[MAX_PATH];
	static HANDLE hFileSend, hFileRecv;
	static FileInfo fileinfo;
	static unsigned int IPRcvFrom, IPSendTo;
	static int iError;	
	int		length;
	WORD    wEventS;
	switch(message)
	{
	case WM_INITDIALOG:
		InitOFN(hwnd);
		hwndSendip = GetDlgItem(hwnd, IDC_SENDip);
		hwndRcvip = GetDlgItem(hwnd, IDC_RCVip);
		hwndText = GetDlgItem(hwnd, IDC_TEXT);
		SetFocus(hwndSendip);
		return FALSE;
	case WM_COMMAND:
		switch(LOWORD(wParam))
		{
		case IDC_SEND:
			if((length = GetIPaddr(hwndSendip, &IPSendTo))<0)
				return TRUE;
			hFileSend = ReadyForSend(lpstrFileName, &fileinfo);
			if(hFileSend == INVALID_HANDLE_VALUE)
			{
				MessageBoxPrintf("Open File failed", "%s", "open file failed open file failed");
				return TRUE;
			}
			StartSendSocket(hwnd, hwndText, hFileSend, &IPSendTo);
			return TRUE;
		case IDC_RCV:
			if((length = GetIPaddr(hwndRcvip, &IPRcvFrom))<0)
				return TRUE;
			StartListenSocket(hwnd, hwndText);
			return TRUE;
		}
		break;
	case WM_SOCKET_send:
		wEventS = WSAGETSELECTEVENT (lParam);   // ie, LOWORD
		switch(wEventS)
		{
		case FD_WRITE:
			SendData(sendfd, hFileSend, hwndText, &fileinfo, lParam, hwnd);
			break;
		case FD_READ:
			FileInfoAccS(hwnd);
			break;
		}
		break;
	case WM_SOCKET_acc:
		StartAcceptSocket(lParam, &IPRcvFrom, hwndText, hwnd);//由返回值進行錯誤檢測
		break;
	case WM_SOCKET_rcv:
		RecvData(hwndText, lpstrFileName, hFileRecv, lParam, hwnd);
		break;
	case WM_SYSCOMMAND:
        switch (LOWORD (wParam))
        {
        case SC_CLOSE:
			closesocket(sendfd);
			if(hFileSend)
			{
				CloseHandle(hFileSend);
				hFileSend = NULL;
			}
            WSACleanup();
            EndDialog(hwnd, 0);
            return TRUE;
        }
        break ;
	}

	return FALSE;
}

int CDECL MessageBoxPrintf (TCHAR * szCaption, TCHAR * szFormat, ...)
{
     TCHAR   szBuffer[1024] ;
     va_list pArgList ;
     va_start (pArgList, szFormat) ;
     _vsntprintf (szBuffer, sizeof (szBuffer) / sizeof (TCHAR), 
                  szFormat, pArgList) ;
     va_end (pArgList) ;
     return MessageBox (NULL, szBuffer, szCaption, 0) ;
}

void EditPrintf (HWND hwndEdit, TCHAR * szFormat, ...)
{
     TCHAR   szBuffer [1024] ;
     va_list pArgList ;

     va_start (pArgList, szFormat) ;
     wvsprintf (szBuffer, szFormat, pArgList) ;
     va_end (pArgList) ;

     SendMessage (hwndEdit, EM_SETSEL, (WPARAM) -1, (LPARAM) -1) ;
     SendMessage (hwndEdit, EM_REPLACESEL, FALSE, (LPARAM) szBuffer) ;
     SendMessage (hwndEdit, EM_SCROLLCARET, 0, 0) ;
}


void InitOFN(HWND hwndDlg)
{
	static TCHAR szFilter[] = TEXT("All Files(*.*)\0*.*\0") \
							 TEXT("Text Files(*.TXT)\0*.txt\0\0");

	ofn.lStructSize       = sizeof(OPENFILENAME);
	ofn.hwndOwner         = hwndDlg;
	ofn.hInstance         = NULL;
	ofn.lpstrFilter       = szFilter;
	ofn.lpstrCustomFilter = NULL;
	ofn.nMaxCustFilter    = 0;
	ofn.nFilterIndex      = 0;
	ofn.lpstrFile         = NULL;
	ofn.nMaxFile          = MAX_PATH;
	ofn.lpstrFileTitle    = NULL;
	ofn.nMaxFileTitle     = MAX_PATH;
	ofn.lpstrInitialDir   = NULL;
	ofn.lpstrTitle        = NULL;
	ofn.Flags             = 0;        
	ofn.nFileOffset       = 0;
	ofn.nFileExtension    = 0;
	ofn.lpstrDefExt       = NULL;
	ofn.lCustData         = 0L;
	ofn.lpfnHook          = NULL;
	ofn.lpTemplateName    = NULL;
}

HANDLE ReadyForSend(PTSTR lpstrFileName, FileInfo *pfileinfo)
{
	HANDLE hFileSend;
	ofn.lpstrFile = lpstrFileName;
	ofn.lpstrFileTitle = pfileinfo->filename;
	ofn.Flags	  = OFN_FILEMUSTEXIST|OFN_PATHMUSTEXIST|OFN_HIDEREADONLY;
	ofn.lpstrTitle=TEXT("發送文件");
	GetOpenFileName(&ofn);

	hFileSend = CreateFile(ofn.lpstrFile, GENERIC_READ, FILE_SHARE_READ, NULL, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, NULL);
	pfileinfo->filesize = GetFileSize(hFileSend, NULL);

	return hFileSend;
}

BOOL StartSendSocket(HWND hwnd, HWND hwndText, HANDLE hFileSend, unsigned int *IP)
{
	WSADATA WSAData;
	WORD   iError;
	if(WSAStartup(WINSOCK_VERSION, &WSAData))
	{
		EditPrintf(hwndText, TEXT("%s"), TEXT("Sorry, Start WinSock Failed"));
		CloseHandle(hFileSend);
		hFileSend = NULL;
		return TRUE;
	}

	EditPrintf(hwndText, TEXT("Started up %hs"), WSAData.szDescription);

	memset(&SendTo, 0, sizeof(SendTo));
	SendTo.sin_family = AF_INET;
	SendTo.sin_addr.S_un.S_addr = (*IP);
	SendTo.sin_port = htons(8888);

	if((sendfd = socket(AF_INET, SOCK_STREAM, 0)) < 0)
	{
		EditPrintf(hwndText, TEXT("\r\n%s"), TEXT("Create Socket Error"));
		if(hFileSend)
		{
			CloseHandle(hFileSend);
			hFileSend = NULL;
		}
		WSACleanup();
		return TRUE;
	}
	EditPrintf(hwndText, TEXT("\r\nSocket %i created."), sendfd);
	if(SOCKET_ERROR == WSAAsyncSelect (sendfd, hwnd, WM_SOCKET_send, FD_WRITE|FD_READ))
    {
        EditPrintf(hwndText, TEXT ("\r\nWSAAsyncSelect error #%i."),WSAGetLastError ());
        closesocket(sendfd);
		if(hFileSend)
		{
			CloseHandle(hFileSend);
			hFileSend = NULL;
		}
        WSACleanup();
        return TRUE;
    }
	connect(sendfd, (SOCKADDR *)&SendTo, sizeof(SendTo));
    if(WSAEWOULDBLOCK != (iError = WSAGetLastError ()))
    {
        EditPrintf(hwndText, TEXT("\r\nConnect error #%i."), iError);
        closesocket(sendfd);
		if(hFileSend)
		{
			CloseHandle(hFileSend);
			hFileSend = NULL;
		}
        WSACleanup();
        return TRUE;
    }
    EditPrintf(hwndText, TEXT("\r\nConnecting to %hs..."), inet_ntoa(SendTo.sin_addr));

	return TRUE;
}

void ErrorHandle(SOCKET sock, HANDLE handle, HWND hwndText)
{
	if( INVALID_SOCKET != sock )
		closesocket(sock);
	if( INVALID_HANDLE_VALUE == handle )
		CloseHandle(handle);
	WSACleanup();
}

int SendData(SOCKET sendfd, HANDLE hFileSend, HWND hwndText, FileInfo *pfileinfo, LPARAM lParam, HWND hwnd)
{
	static char *SendBuf;
	static DWORD  TotalInfoLen = 0;
	static DWORD  TotalLen = 0;
	static DWORD  Len = 0;
	static DWORD  nIn;
	static DWORD  size;
	static BOOL First = TRUE;

	int  oncelen;	
	WORD wEvent, wError;

	wEvent = WSAGETSELECTEVENT (lParam);   // ie, LOWORD
    wError = WSAGETSELECTERROR (lParam);   // ie, HIWORD
	if( wError || FD_WRITE != wEvent )
	{
		EditPrintf(hwndText, TEXT("\r\n%s"), TEXT("網絡事件錯誤,文件發送失敗"));
		ErrorHandle(sendfd, hFileSend, hwndText);
		return -1;
	}
	if(First)
	{
		EditPrintf(hwndText, TEXT("\r\n開始發送數據 ..... "));
		First = FALSE;
	}
	while(TotalInfoLen<sizeof(FileInfo))	//if(First)
	{	
		pfileinfo->filesize = htonl(pfileinfo->filesize);
		oncelen = send(sendfd, ((char *)pfileinfo+TotalInfoLen), (sizeof(FileInfo)-TotalInfoLen), 0);
		if(oncelen<0)
			return oncelen;
		TotalInfoLen += oncelen;
		if(TotalInfoLen == sizeof(FileInfo))
		{
			size = ntohl(pfileinfo->filesize);
			SendBuf = (char *)xmalloc(MIN(size,MAX_malloc));
			ReadFile(hFileSend, SendBuf, MIN(size,MAX_malloc), &nIn, NULL);
			break;
		}
	}
	if(!peer)
		return 1;
	while(TotalLen<size)	//else
	{
		while(Len<nIn)
		{
			oncelen = send(sendfd, (SendBuf+Len), MIN(4400, nIn-Len), 0);
			if(oncelen<0)
				return oncelen;
			Len += oncelen;
			TotalLen += oncelen;
		}
		if(TotalLen == size)
		{
			EditPrintf(hwndText, TEXT("\r\n文件已經發送完畢,共 %i 字節"), size);
			WSAAsyncSelect (sendfd, hwnd, 0, 0);
			xfree(SendBuf);
			closesocket(sendfd);
			CloseHandle(hFileSend);
			WSACleanup();
			TotalInfoLen = 0; TotalLen = 0; Len = 0; nIn = 0; size = 0;
			return 1;
		}
		if(ReadFile(hFileSend, SendBuf, MAX_malloc, &nIn, NULL) && (nIn>0))
		{
			Len = 0;
		}
	}
	return 1;
}

int GetIPaddr(HWND hwnd, unsigned int *IP)
{
	int iLength;
	unsigned int ip;
	TCHAR szIP[20];
	iLength = SendMessage(hwnd, EM_GETLINE, 0, (LPARAM)szIP);
	iLength = strlen(szIP);
	szIP[iLength+1] = '\0';
	ip = inet_addr(szIP);
	if(iLength<7 || (INADDR_NONE==ip))
	{
		MessageBoxPrintf(TEXT("Error"), TEXT("請輸入正確的 IP 地址"));
		return -1;
	}
	
	*IP = ip;
	return iLength;
}

int StartListenSocket(HWND hwndMain, HWND hwndText)
{
	int  iError;
	WSADATA WSAData;
	EditPrintf(hwndText, TEXT("\r\n%s"), TEXT("正在開啟監聽套接口....."));
	if(iError = WSAStartup(WINSOCK_VERSION, &WSAData))
    {
         EditPrintf (hwndText, TEXT("\r\nStartup error #%i."), iError);
         return iError;
    }
    rcvfd = socket(AF_INET, SOCK_STREAM, 0);
    if(rcvfd == INVALID_SOCKET)
    {
         EditPrintf(hwndText, TEXT("\r\nSocket creation error #%i."), WSAGetLastError());
         WSACleanup();
         return INVALID_SOCKET;
    }
    EditPrintf(hwndText, TEXT("\r\nSocket %i created."), rcvfd);
    if(SOCKET_ERROR == WSAAsyncSelect(rcvfd, hwndMain, WM_SOCKET_acc, FD_ACCEPT))
    {
         EditPrintf (hwndText, TEXT("**WSAAsyncSelect error #%i.\r\n"),WSAGetLastError());
         closesocket(rcvfd);
         WSACleanup();
         return SOCKET_ERROR;
    }

    memset(&RcvFrom, 0, sizeof(RcvFrom));
	RcvFrom.sin_family           = AF_INET ;
    RcvFrom.sin_port             = htons(8888); 
    RcvFrom.sin_addr.S_un.S_addr = INADDR_ANY;
	if(bind(rcvfd, (struct sockaddr *)&RcvFrom, sizeof(RcvFrom)) == SOCKET_ERROR)
	{
		EditPrintf(hwndText, TEXT("\r\nbind error: %d"), WSAGetLastError());
		closesocket(rcvfd);
		WSACleanup();
		return SOCKET_ERROR;
	}
	if(listen(rcvfd, 1) == SOCKET_ERROR)
	{
		EditPrintf(hwndText, TEXT("\r\nlisten error: %d"), WSAGetLastError());
		closesocket(rcvfd);
		WSACleanup();
		return SOCKET_ERROR;
	}
	EditPrintf(hwndText, TEXT("\r\n%s"), TEXT("正在監聽連接...."));

	return 1;
}

int StartAcceptSocket(LPARAM lParam, unsigned int *IP, HWND hwndText, HWND hwndMain)
{
	struct sockaddr_in peerSockaddr;
	int   SockAddrLen = sizeof(peerSockaddr);
	WORD  wEvent, wError;
	wEvent = WSAGETSELECTEVENT (lParam);   // ie, LOWORD
	wError = WSAGETSELECTERROR (lParam);   // ie, HIWORD
	if(wError || (wEvent!=FD_ACCEPT))
	{
		EditPrintf(hwndText, TEXT("\r\n%s"), TEXT("接受連接發生錯誤"));
		closesocket(rcvfd);
		WSACleanup();
		return wError;
	}
	acceptfd = accept(rcvfd, (struct sockaddr *)&peerSockaddr, &SockAddrLen);
	if(INVALID_SOCKET == acceptfd)
	{
		EditPrintf(hwndText, TEXT("\r\naccept error %i."), WSAGetLastError());
		closesocket(acceptfd);
		return SOCKET_ERROR;
	}
	if(SOCKET_ERROR == WSAAsyncSelect(acceptfd, hwndMain, WM_SOCKET_rcv, FD_READ))
	{
		EditPrintf(hwndText, TEXT ("\r\nWSAAsyncSelect error #%i."),WSAGetLastError());
		closesocket(acceptfd);
		WSACleanup();
		return SOCKET_ERROR;
	}
	if( (*IP) != peerSockaddr.sin_addr.S_un.S_addr )
	{
		EditPrintf(hwndText, TEXT("\r\n非指定地址的連接到來,關閉連接"));
		WSAAsyncSelect (acceptfd, hwndMain, 0, 0);
		closesocket(acceptfd);
		return -2;
	}
	WSAAsyncSelect(rcvfd, hwndMain, 0, 0);
	closesocket(rcvfd); //現在只要保留acceptfd即可
	EditPrintf(hwndText, TEXT("\r\n接收數據的連接已經建立"));

	return 1;
}

int RecvData(HWND hwndText, TCHAR *lpstrFileName, HANDLE &hFileRcv, LPARAM lParam, HWND hwnd)
{
	static unsigned int   FileInfoLen = sizeof(FileInfo);
	static unsigned int TotalInfoRecvd = 0;
	static unsigned int TotalFileRecvd = 0;
	static unsigned int  ThisTotalLen = 0;
	static FileInfo fileinfo;
	static char *RecvBuf;
	static BOOL First = TRUE;
	
	int  oncelen;
	DWORD  nOut;
/*	WORD  wEvent, wError;

	wEvent = WSAGETSELECTEVENT (lParam);   // ie, LOWORD
	wError = WSAGETSELECTERROR (lParam);   // ie, HIWORD
	if(wError || (wEvent!=FD_READ))
	{
		EditPrintf(hwndText, TEXT("\r\n%s"), TEXT("接收數據發生錯誤"));
		closesocket(rcvfd);
		WSACleanup();
		return wError;
	}
*/	if(First)
	{
		EditPrintf(hwndText, TEXT("\r\n開始接收數據 ..... "));
		First = FALSE;
	}
	while(TotalInfoRecvd < FileInfoLen)
	{
		oncelen = recv(acceptfd, (char *)&fileinfo, FileInfoLen, 0);
		if(oncelen<0)
			return -1;
		TotalInfoRecvd += oncelen;
		if(TotalInfoRecvd == FileInfoLen)
		{
			fileinfo.filesize = ntohl(fileinfo.filesize);
			ofn.lpstrFile = fileinfo.filename;
			ofn.Flags = OFN_FILEMUSTEXIST|OFN_PATHMUSTEXIST|OFN_HIDEREADONLY|OFN_OVERWRITEPROMPT;
			ofn.lpstrTitle = TEXT("將接收文件保存為");
			GetSaveFileName(&ofn);
			//如果文件已經存在則CreateFile調用失敗
			hFileRcv = CreateFile(ofn.lpstrFile, GENERIC_WRITE, FILE_SHARE_WRITE, NULL, CREATE_NEW, FILE_ATTRIBUTE_NORMAL, NULL);
			RecvBuf = (char *)xmalloc(MAX_malloc);
			FileInfoAccR(hwnd);
		}
	}
	while(TotalFileRecvd < fileinfo.filesize)
	{
		while(ThisTotalLen < MIN(MAX_malloc, fileinfo.filesize-TotalFileRecvd))
		{
			oncelen = recv(acceptfd, RecvBuf + ThisTotalLen, MAX_malloc - ThisTotalLen, 0);
			if(oncelen < 0)
				return -1;
			ThisTotalLen += oncelen;
			TotalFileRecvd += oncelen;
		}
		WriteFile(hFileRcv, RecvBuf, ThisTotalLen, &nOut, NULL);
		if( nOut != ThisTotalLen )
		{
			EditPrintf(hwndText, TEXT("\r\nFatal write error: %x"), GetLastError());
			//.........
		}
		ThisTotalLen = 0;
		if(TotalFileRecvd == fileinfo.filesize )
		{
			EditPrintf(hwndText, TEXT("\r\n文件接收完畢,共 %i 字節"), fileinfo.filesize);
			EditPrintf(hwndText, TEXT("\r\n文件已保存為 %s"),fileinfo.filename);
			xfree(RecvBuf);
			RecvBuf = NULL;
			CloseHandle(hFileRcv);
			closesocket(acceptfd);
			WSACleanup();
		}
	}
	if(TotalFileRecvd == fileinfo.filesize)
	{
		TotalFileRecvd = 0;
		TotalInfoRecvd = 0;
		ThisTotalLen = 0;
	}
	return 1;
}

int FileInfoAccS(HWND hwnd)
{
	AccInfo accinfo;
	recv(sendfd, (char *)&accinfo, sizeof(accinfo), 0);
	if( accinfo.info[0]=='w')
	{
		peer = TRUE;
		WSAAsyncSelect(sendfd, hwnd, WM_SOCKET_send, FD_WRITE);
	}
	else
		return -1;
	return 1;
}

int FileInfoAccR(HWND hwndMain)
{
	AccInfo accinfo;
	accinfo.info[0]='w'; accinfo.info[1]='a'; accinfo.info[2]='n'; accinfo.info[3]='\0';//
	send(acceptfd, (char *)&accinfo, sizeof(accinfo), 0);
	return 1;
}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
国内外成人在线| 日韩欧美国产一二三区| 欧美一区二区在线视频| 中文在线免费一区三区高中清不卡| 亚洲高清三级视频| 成人精品鲁一区一区二区| 69精品人人人人| 一区二区三区在线视频观看58| 国产精品66部| 欧美va亚洲va| 日韩中文字幕区一区有砖一区| 成人精品视频一区二区三区| 日韩三级中文字幕| 亚洲国产一区二区三区| 99久久精品国产毛片| 久久久激情视频| 毛片一区二区三区| 欧美人狂配大交3d怪物一区| 亚洲欧美一区二区三区久本道91| 国内成+人亚洲+欧美+综合在线| 欧美精品丝袜中出| 亚洲国产另类精品专区| 在线亚洲一区观看| 亚洲男同性视频| 99国产精品视频免费观看| 2欧美一区二区三区在线观看视频| 肉色丝袜一区二区| 欧美三级乱人伦电影| 亚洲美女免费在线| 在线观看日产精品| 一二三四区精品视频| 91视频在线观看| 最新中文字幕一区二区三区| 国产精品1024| 中文字幕第一区| 欧美一区二区三区系列电影| 亚洲丶国产丶欧美一区二区三区| 91同城在线观看| 一区二区日韩av| 欧美日韩一区二区三区在线| 亚洲成人动漫在线免费观看| 欧美猛男男办公室激情| 日本aⅴ免费视频一区二区三区| 欧美一区二区啪啪| 捆绑变态av一区二区三区| 欧美mv日韩mv亚洲| 狠狠色综合色综合网络| 国产午夜精品久久久久久久| 成人动漫在线一区| 一区二区三区在线观看动漫| 9191国产精品| 国产伦理精品不卡| 国产欧美视频一区二区| www.日韩在线| 亚洲国产视频一区二区| 欧美成人艳星乳罩| 国产精品一区二区久久不卡| 自拍偷拍国产亚洲| 欧美日韩一级片在线观看| 全部av―极品视觉盛宴亚洲| 亚洲一区二区三区中文字幕 | 亚洲成人久久影院| 日韩免费视频线观看| 国产99精品视频| 午夜日韩在线电影| 精品久久久久一区| 色综合久久天天| 蜜桃久久av一区| 国产视频亚洲色图| 91久久精品一区二区三| 麻豆精品在线看| 亚洲免费三区一区二区| 日韩一区二区三| 日本国产一区二区| 国产精品 欧美精品| 亚洲一区二区三区中文字幕在线| www国产精品av| 在线观看欧美日本| 岛国一区二区在线观看| 青青草国产精品97视觉盛宴| 综合久久给合久久狠狠狠97色| 欧美一区二区三区爱爱| youjizz国产精品| 美女一区二区三区在线观看| 亚洲色图欧美在线| 久久久美女毛片| 在线成人免费观看| 91天堂素人约啪| 国产乱码一区二区三区| 日韩在线观看一区二区| 亚洲柠檬福利资源导航| 国产日韩欧美高清在线| 欧美成人三级电影在线| 欧美色精品在线视频| 大美女一区二区三区| 久草中文综合在线| 日韩综合一区二区| 一区二区国产视频| 中文字幕欧美一| 久久你懂得1024| 精品福利在线导航| 日韩你懂的电影在线观看| 欧美日韩中文字幕精品| 色天天综合色天天久久| 成人av先锋影音| 懂色av中文一区二区三区| 国产乱码精品一区二区三区五月婷| 青青草国产精品97视觉盛宴| 日本vs亚洲vs韩国一区三区 | 欧美激情中文字幕| 26uuu色噜噜精品一区| 日韩欧美的一区二区| 91麻豆精品91久久久久同性| 欧美日韩亚洲高清一区二区| 欧美日韩免费在线视频| 欧美日韩一级大片网址| 欧美日韩免费在线视频| 欧美美女bb生活片| 制服丝袜亚洲播放| 欧美成人激情免费网| 久久久久久久精| 中文字幕国产一区二区| 最近日韩中文字幕| 亚洲一区自拍偷拍| 秋霞电影网一区二区| 国内成+人亚洲+欧美+综合在线| 国产一区二区在线观看免费| 国产一区二区免费在线| 国产999精品久久久久久绿帽| 成人精品gif动图一区| 色婷婷久久综合| 91精品国产综合久久久久久| 精品国产一二三| 国产精品国产三级国产普通话蜜臀 | 欧美性色aⅴ视频一区日韩精品| 在线观看一区不卡| 日韩欧美在线网站| 国产欧美日韩卡一| 成人免费视频在线观看| 午夜精品久久久| 国产一区二区三区综合| 不卡av在线免费观看| 欧美精品xxxxbbbb| 久久久激情视频| 亚洲最大的成人av| 麻豆成人久久精品二区三区红| 成人毛片视频在线观看| 欧美视频一区二区三区四区 | 黑人巨大精品欧美一区| 成人深夜视频在线观看| 欧美日韩亚洲国产综合| 久久精品一区蜜桃臀影院| 亚洲欧美区自拍先锋| 男男gaygay亚洲| 成人一区二区三区视频在线观看| 欧美调教femdomvk| 国产欧美日本一区二区三区| 亚洲国产精品久久人人爱蜜臀| 精品亚洲aⅴ乱码一区二区三区| 99精品视频一区二区三区| 日韩亚洲电影在线| 一区二区三区电影在线播| 麻豆精品国产91久久久久久| 99精品欧美一区二区三区综合在线| 91精品国产色综合久久不卡电影 | 91在线精品一区二区三区| 91精品国产综合久久福利| 中文字幕一区日韩精品欧美| 秋霞午夜av一区二区三区| 91免费精品国自产拍在线不卡| 2023国产精华国产精品| 亚洲国产日产av| 91污片在线观看| 国产精品三级久久久久三级| 美洲天堂一区二卡三卡四卡视频 | 成人精品一区二区三区中文字幕| 在线成人av影院| 一区二区高清视频在线观看| 成人黄色片在线观看| 久久久久国产精品麻豆ai换脸| 日韩**一区毛片| 欧美精品黑人性xxxx| 亚洲制服丝袜在线| 91免费视频观看| 亚洲人成亚洲人成在线观看图片 | 欧美国产日产图区| 国产麻豆精品在线| 精品免费视频一区二区| 日韩高清在线电影| 欧美另类z0zxhd电影| 亚洲成人动漫av| 欧美日韩一区二区在线视频| 亚洲精品乱码久久久久久黑人| a级精品国产片在线观看| 中文天堂在线一区| 成人蜜臀av电影| 国产精品久久久99| 久久久美女毛片| 国产一区二区毛片| 久久久久亚洲蜜桃|