青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品

posts - 23,  comments - 20,  trackbacks - 0
費(fèi)了九牛二虎之力  終于讓我把二弄出來(lái)了...
不好弄啊  本來(lái)都準(zhǔn)備算了
哎  技術(shù)人員  哪能那么簡(jiǎn)單說(shuō)放棄 ...
最后用了一個(gè)最笨的方法終于實(shí)現(xiàn)了要求

這次由于時(shí)間很匆忙  所以 界面方面沒(méi)有做任何工作  速度的計(jì)算也沒(méi)有 
本來(lái)是準(zhǔn)備用線程池的  試驗(yàn)了一下  最后還是做老本行吧...自己創(chuàng)建線程
沒(méi)有什么多任務(wù)方面的概念   就是一個(gè)簡(jiǎn)單的多線程的Demo
上代碼吧...頭疼  代碼很爛  不要丟磚頭

下載地址 HttpDownload MultiThread.rar
實(shí)現(xiàn)文件

  1 /***************************************************************************************
  2 *文件名稱: HttpDownload MultiThreadDlg.cpp
  3 *文件說(shuō)明: 測(cè)試自己寫的多線程文件下載
  4 *思路說(shuō)明: 利用最笨的方法  五個(gè)線程 每個(gè)線程寫入一個(gè)文件 然后最后由主線程來(lái)組裝成完整
  5 *          的文件
  6 *作    者: 李佳
  7 *完成時(shí)間: 09.8.18
  8 **************************************************************************************/
  9 
 10 #include "stdafx.h"
 11 #include "HttpDownload MultiThread.h"
 12 #include "HttpDownload MultiThreadDlg.h"
 13 #include "HttpSocket.h"
 14 #include "MyStruct.h"
 15 #pragma comment(lib , "Http.lib")
 16 
 17 #define  MAX_THREAD_NUM 3        //最大線程數(shù)量
 18 
 19 #ifdef _DEBUG
 20 #define new DEBUG_NEW
 21 #endif
 22 DWORD WINAPI DownloadThreadProc(LPVOID pDate);
 23 
 24 CHttpDownloadMultiThreadDlg::CHttpDownloadMultiThreadDlg(CWnd* pParent /*=NULL*/)
 25     : CDialog(CHttpDownloadMultiThreadDlg::IDD, pParent)
 26     , m_strSpeed(_T(""))
 27     , m_strStorgePath(_T(""))
 28     , iCount(0)
 29     , m_strDownloadAddr(_T("http://www.vckbase.com/code/network/internet/testhttp.rar"))
 30     , iGetNum(0)
 31 {
 32     m_hIcon = AfxGetApp()->LoadIcon(IDR_MAINFRAME);
 33 }
 34 
 35 void CHttpDownloadMultiThreadDlg::DoDataExchange(CDataExchange* pDX)
 36 {
 37     CDialog::DoDataExchange(pDX);
 38     DDX_Text(pDX, IDC_EDIT3, m_strSpeed);
 39     DDX_Text(pDX, IDC_EDIT2, m_strStorgePath);
 40     DDX_Text(pDX, IDC_EDIT1, m_strDownloadAddr);
 41     DDX_Control(pDX, IDC_PROGRESS1, m_DownloadProg);
 42 }
 43 
 44 BEGIN_MESSAGE_MAP(CHttpDownloadMultiThreadDlg, CDialog)
 45     ON_WM_SYSCOMMAND()
 46     ON_WM_PAINT()
 47     ON_WM_QUERYDRAGICON()
 48     ON_MESSAGE(WM_USER_UICHANGE , ChangeUI)
 49     //}}AFX_MSG_MAP
 50     ON_BN_CLICKED(IDOK, &CHttpDownloadMultiThreadDlg::OnBnClickedOk)
 51     ON_BN_CLICKED(IDCANCEL, &CHttpDownloadMultiThreadDlg::OnBnClickedCancel)
 52     ON_BN_CLICKED(IDOK2, &CHttpDownloadMultiThreadDlg::OnBnClickedGetFilePath)
 53 END_MESSAGE_MAP()
 54 
 55 
 56 // CHttpDownloadMultiThreadDlg 消息處理程序
 57 
 58 BOOL CHttpDownloadMultiThreadDlg::OnInitDialog()
 59 {
 60     CDialog::OnInitDialog();
 61 
 62     // 將“關(guān)于”菜單項(xiàng)添加到系統(tǒng)菜單中。
 63 
 64     // IDM_ABOUTBOX 必須在系統(tǒng)命令范圍內(nèi)。
 65     ASSERT((IDM_ABOUTBOX & 0xFFF0== IDM_ABOUTBOX);
 66     ASSERT(IDM_ABOUTBOX < 0xF000);
 67 
 68     CMenu* pSysMenu = GetSystemMenu(FALSE);
 69     if (pSysMenu != NULL)
 70     {
 71         CString strAboutMenu;
 72         strAboutMenu.LoadString(IDS_ABOUTBOX);
 73         if (!strAboutMenu.IsEmpty())
 74         {
 75             pSysMenu->AppendMenu(MF_SEPARATOR);
 76             pSysMenu->AppendMenu(MF_STRING, IDM_ABOUTBOX, strAboutMenu);
 77         }
 78     }
 79 
 80     // 設(shè)置此對(duì)話框的圖標(biāo)。當(dāng)應(yīng)用程序主窗口不是對(duì)話框時(shí),框架將自動(dòng)
 81     //  執(zhí)行此操作
 82     SetIcon(m_hIcon, TRUE);            // 設(shè)置大圖標(biāo)
 83     SetIcon(m_hIcon, FALSE);        // 設(shè)置小圖標(biāo)
 84 
 85     // TODO: 在此添加額外的初始化代碼
 86     ::InitializeCriticalSection(&cs);
 87     return TRUE;  // 除非將焦點(diǎn)設(shè)置到控件,否則返回 TRUE
 88 }
 89 
 90 void CHttpDownloadMultiThreadDlg::OnSysCommand(UINT nID, LPARAM lParam)
 91 {
 92     CDialog::OnSysCommand(nID, lParam);    
 93 }
 94 
 95 void CHttpDownloadMultiThreadDlg::OnPaint()
 96 {
 97     if (IsIconic())
 98     {
 99         CPaintDC dc(this); // 用于繪制的設(shè)備上下文
100 
101         SendMessage(WM_ICONERASEBKGND, reinterpret_cast<WPARAM>(dc.GetSafeHdc()), 0);
102 
103         // 使圖標(biāo)在工作區(qū)矩形中居中
104         int cxIcon = GetSystemMetrics(SM_CXICON);
105         int cyIcon = GetSystemMetrics(SM_CYICON);
106         CRect rect;
107         GetClientRect(&rect);
108         int x = (rect.Width() - cxIcon + 1/ 2;
109         int y = (rect.Height() - cyIcon + 1/ 2;
110 
111         // 繪制圖標(biāo)
112         dc.DrawIcon(x, y, m_hIcon);
113     }
114     else
115     {
116         CDialog::OnPaint();
117     }
118 }
119 
120 //當(dāng)用戶拖動(dòng)最小化窗口時(shí)系統(tǒng)調(diào)用此函數(shù)取得光標(biāo)
121 //顯示。
122 HCURSOR CHttpDownloadMultiThreadDlg::OnQueryDragIcon()
123 {
124     return static_cast<HCURSOR>(m_hIcon);
125 }
126 
127 //確定按鈕
128 void CHttpDownloadMultiThreadDlg::OnBnClickedOk()
129 {
130     if (m_strDownloadAddr == "" || m_strStorgePath == "")
131     {
132         AfxMessageBox("請(qǐng)輸入下載地址或者保存路徑");
133         return;
134     }    
135     //file.Open(m_strStorgePath , CFile::modeCreate | CFile::modeWrite);    
136     int iFileSize = GetFileSize();    //獲取文件大小
137     //file.SetLength(iFileSize);        //創(chuàng)建一個(gè)空文件
138     iCount = iFileSize / (4096);    //分段
139     if(iFileSize%(4096))
140         iCount++;    //剩下的一個(gè)
141     
142     //本來(lái)是準(zhǔn)備使用Windows自帶的線程池  后來(lái)由于各種問(wèn)題  中斷了這個(gè)想法
143     HANDLE hThread[MAX_THREAD_NUM];
144     MYSTRUCT MyStruct[MAX_THREAD_NUM];
145     int iThreadWork = iFileSize / (MAX_THREAD_NUM - 1);
146     m_DownloadProg.SetRange(0 , iCount);        //進(jìn)度條    
147     for (int i = 0 ; i < MAX_THREAD_NUM ; i++)    //創(chuàng)建線程
148     {
149         //PMYSTRUCT MyStruct = (PMYSTRUCT)new char[sizeof(MYSTRUCT)];        
150         MyStruct[i].iThreadNum = i;
151         MyStruct[i].strURL = m_strDownloadAddr;
152         MyStruct[i].iStart = iThreadWork * i ;
153         MyStruct[i].iTo = iThreadWork * (i + 1- 1;
154         if(MyStruct[i].iTo >= iFileSize)
155             MyStruct[i].iTo = iFileSize;
156         MyStruct->Dlg = this;
157         hThread[i] = ::CreateThread(NULL,0,DownloadThreadProc,(PVOID)&MyStruct[i],NULL,NULL);
158     }    
159     WaitForMultipleObjects(MAX_THREAD_NUM , hThread , TRUE , INFINITE);
160     
161     file.Open(m_strStorgePath , CFile::modeCreate | CFile::modeWrite);
162     CFile fileTemp;
163     for(int i = 0 ; i < MAX_THREAD_NUM ; i++)
164     {
165         CString strTemp;
166         int xLen = MyStruct[i].iTo - MyStruct[i].iStart + 1;
167         strTemp.Format("%d" , i);
168         fileTemp.Open(strTemp , CFile::modeRead);
169         //char * pContent = new char[xLen];
170         CHAR pContent[50000];    //簡(jiǎn)單起見 直接用了大數(shù)組
171         fileTemp.Read(pContent , xLen );
172         file.Write(pContent , xLen);
173         fileTemp.Close();
174 //        delete pContent;
175     }
176     file.Close();
177 }
178 
179 //退出按鈕
180 void CHttpDownloadMultiThreadDlg::OnBnClickedCancel()
181 {    
182     OnCancel();
183 }
184 
185 //獲取存儲(chǔ)地址
186 void CHttpDownloadMultiThreadDlg::OnBnClickedGetFilePath()
187 {
188     UpdateData(TRUE);
189     if(m_strDownloadAddr == "")
190     {
191         AfxMessageBox("請(qǐng)輸入下載地址" , MB_OK);
192         return ;
193     }
194 
195     CString strFileName = m_strDownloadAddr;
196     m_strStorgePath = GetStorgeFolde();
197 
198     while(strFileName.Find("/"!= -1)
199     {
200         int i = strFileName.Find("/");
201         strFileName = strFileName.Mid(i +1 , strFileName.GetLength() - i - 1);
202     }
203 
204     m_strStorgePath += strFileName;
205     UpdateData(FALSE);
206 }
207 
208 //獲取存儲(chǔ)的文件夾
209 CString CHttpDownloadMultiThreadDlg::GetStorgeFolde(void)
210 {
211     CString strFold;
212     BROWSEINFO   bi;  
213     TCHAR   buffer[MAX_PATH];  
214     ZeroMemory(buffer,   MAX_PATH);  
215     bi.hwndOwner   =   GetSafeHwnd();  
216     bi.pidlRoot   =   NULL;  
217     bi.pszDisplayName   =   buffer;  
218 
219     bi.lpszTitle   =   _T("選擇一個(gè)文件夾");  
220     bi.ulFlags   =   BIF_EDITBOX;  
221     bi.lpfn   =   NULL;  
222     bi.lParam   =   0;  
223     bi.iImage   =   0;  
224 
225     LPITEMIDLIST   pList   =   NULL;  
226     if   ((pList   =   SHBrowseForFolder(&bi))   !=   NULL)  
227     {  
228         TCHAR   path[MAX_PATH];  
229         ZeroMemory(path,   MAX_PATH);  
230         SHGetPathFromIDList(pList,   path);  
231         strFold = path;
232         UpdateData(FALSE);        
233     }    
234     return strFold;
235 }
236 int CHttpDownloadMultiThreadDlg::GetFileSize(void)
237 {
238     CHttpSocket HttpSocket;
239     CString strServer , strObject ;
240     USHORT uPort;
241     DWORD dwServerType;
242     long lLenth;
243     const char * pRequestHeader = NULL;
244 
245     //通過(guò)URL獲取相關(guān)參數(shù)
246     AfxParseURL(m_strDownloadAddr , dwServerType , strServer , strObject , uPort);
247     pRequestHeader = HttpSocket.FormatRequestHeader((LPTSTR)(LPCTSTR)strServer , (LPTSTR)(LPCTSTR)strObject , lLenth );
248     HttpSocket.Socket();
249     HttpSocket.Connect((LPTSTR)(LPCTSTR)strServer );
250     HttpSocket.SendRequest();
251     HttpSocket.SetTimeout(100);
252 
253     char szLength[15];
254     HttpSocket.GetField("Content-Length" , szLength , 15);
255     int iServerState = HttpSocket.GetServerState();
256     return atoi(szLength);    
257 }
258 
259 //更新進(jìn)度條
260 LRESULT CHttpDownloadMultiThreadDlg::ChangeUI(WPARAM wParam, LPARAM lParam)
261 {    
262     iGetNum++;
263     m_DownloadProg.SetPos(iGetNum);        
264     return 1;
265 }
266 
267 //下載線程
268 DWORD WINAPI DownloadThreadProc(LPVOID pDate)
269 {
270     MYSTRUCT* Mystruct = (PMYSTRUCT)pDate;
271 
272     CHttpSocket HttpSocket;
273     CString strServer , strObject ;
274     USHORT uPort;
275     DWORD dwServerType;
276     long lLenth;
277     const char * pRequestHeader = NULL;
278 
279     //通過(guò)URL獲取相關(guān)參數(shù)
280     AfxParseURL(Mystruct->strURL , dwServerType , strServer , strObject , uPort);
281     pRequestHeader = HttpSocket.FormatRequestHeader((LPTSTR)(LPCTSTR)strServer , (LPTSTR)(LPCTSTR)strObject , lLenth ,NULL , NULL ,
282                                 Mystruct->iStart ,  Mystruct->iTo );
283                                 /*分段傳輸*/
284     HttpSocket.Socket();
285     HttpSocket.Connect((LPTSTR)(LPCTSTR)strServer );
286     HttpSocket.SendRequest();
287     HttpSocket.SetTimeout(100);
288 
289 #ifdef _DEBUG
290     CString strTemp;
291     strTemp.Format("Start :  %d   to   %d  \r\n" , Mystruct->iStart , Mystruct->iTo);
292     TRACE(strTemp);
293 #endif    
294 
295     CFile file;    
296     CString strFormat;
297     strFormat.Format("%d" , Mystruct->iThreadNum);
298     file.Open(strFormat , CFile ::modeCreate | CFile::modeWrite);
299     int iFileSize = Mystruct->iTo - Mystruct->iStart;
300     int iComplete = 0;
301     char szDate[4096];
302     DWORD dwStartTime , dwEndTime;
303     int iCalc = 0;
304     while(iComplete < iFileSize)
305     {        
306         dwStartTime = GetTickCount();
307         int iRecvNum = HttpSocket.Receive(szDate , 4096);
308         dwEndTime = GetTickCount();
309         if (iRecvNum == 0)
310         {
311             ::AfxMessageBox("服務(wù)器關(guān)閉鏈接");
312             return 0;
313         }
314         if (iRecvNum == -1)
315         {
316             ::AfxMessageBox("接收數(shù)據(jù)超時(shí)");
317             return 0;
318         }    
319     //    int iSpeed = 4096 / (dwStartTime - dwEndTime);
320         file.Write(szDate , iRecvNum);
321         iComplete += iRecvNum;
322 //        strFormat.Format("%d" , iSpeed);
323         //SendMessage(Mystruct->Dlg->m_hWnd  , WM_USER_UICHANGE , 0 , 0);
324     //    Mystruct->Dlg->m_strSpeed = strFormat;
325         /*if (iCalc >3)
326         {
327             Mystruct->Dlg->UpdateData(FALSE);
328             iCalc = 0;
329         }        */
330     }    
331     return 1;
332 }
333 
334 

頭文件
 1 // HttpDownload MultiThreadDlg.h : 頭文件
 2 //
 3 
 4 #pragma once
 5 #include "afxcmn.h"
 6 #include "afx.h"
 7 
 8 typedef struct _Mystruct
 9 {
10     CString strURL;        //鏈接
11     int iStart ;                //傳送文件的起點(diǎn)
12     int iTo;                //終點(diǎn)
13     int iThreadNum;        //線程標(biāo)示符    
14     CHttpDownloadMultiThreadDlg * Dlg;
15 }MYSTRUCT , *PMYSTRUCT;
16 // CHttpDownloadMultiThreadDlg 對(duì)話框
17 class CHttpDownloadMultiThreadDlg : public CDialog
18 {
19 // 構(gòu)造
20 public:
21     CHttpDownloadMultiThreadDlg(CWnd* pParent = NULL);    // 標(biāo)準(zhǔn)構(gòu)造函數(shù)
22 
23 // 對(duì)話框數(shù)據(jù)
24     enum { IDD = IDD_HTTPDOWNLOADMULTITHREAD_DIALOG };
25 
26     protected:
27     virtual void DoDataExchange(CDataExchange* pDX);    // DDX/DDV 支持
28 // 實(shí)現(xiàn)
29 protected:
30     HICON m_hIcon;
31 
32     // 生成的消息映射函數(shù)
33     virtual BOOL OnInitDialog();
34     afx_msg void OnSysCommand(UINT nID, LPARAM lParam);
35     afx_msg void OnPaint();
36     afx_msg HCURSOR OnQueryDragIcon();
37     DECLARE_MESSAGE_MAP()
38 public:
39     CString m_strSpeed;
40     CString m_strStorgePath;
41     CString m_strDownloadAddr;
42     afx_msg void OnBnClickedOk();
43     afx_msg void OnBnClickedCancel();
44     afx_msg void OnBnClickedGetFilePath();
45     LRESULT ChangeUI (WPARAM , LPARAM);
46     CProgressCtrl m_DownloadProg;
47     CString GetStorgeFolde(void);
48 private:
49     int GetFileSize(void);
50     int iCount;
51     
52 public:
53     CFile file;
54     CRITICAL_SECTION cs;    //臨界區(qū)
55     /*typedef struct _Mystruct
56     {
57         CHttpDownloadMultiThreadDlg * Dlg;
58         int iFileDownloadPos;
59     }MYSTRUCT , *PMYSTRUCT;
60     MYSTRUCT Mystruct;*/
61     int iGetNum;
62 };
63 
64 

本來(lái)要上個(gè)效果圖  其實(shí)沒(méi)必要 需要測(cè)試的朋友自己測(cè)試一下吧  
經(jīng)常出現(xiàn)超時(shí)問(wèn)題  不知道如何解決 自己找找Http類的Bug吧

posted on 2009-08-18 17:28 李佳 閱讀(439) 評(píng)論(0)  編輯 收藏 引用

只有注冊(cè)用戶登錄后才能發(fā)表評(píng)論。
網(wǎng)站導(dǎo)航: 博客園   IT新聞   BlogJava   博問(wèn)   Chat2DB   管理


<2009年8月>
2627282930311
2345678
9101112131415
16171819202122
23242526272829
303112345

常用鏈接

留言簿

隨筆分類

隨筆檔案

文章檔案

相冊(cè)

搜索

  •  

最新評(píng)論

閱讀排行榜

評(píng)論排行榜

青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>
            国产精品视频自拍| 久久一区激情| 亚洲电影自拍| 欧美国产在线视频| 亚洲欧美日韩精品久久亚洲区| 欧美在线综合视频| 中文在线一区| 欧美激情1区2区| 噜噜噜在线观看免费视频日韩| 国产日韩精品电影| 欧美一区二区三区电影在线观看| 午夜亚洲福利| 韩国av一区二区三区在线观看| 在线亚洲电影| 亚洲一区在线播放| 国产欧美综合在线| 久久免费偷拍视频| 亚洲深夜福利| 久久精品最新地址| 日韩午夜中文字幕| 国产日韩欧美一区| 99在线精品观看| 欧美日本久久| 性色一区二区三区| 91久久精品一区| 午夜精品久久99蜜桃的功能介绍| 国产日韩精品综合网站| 亚洲精品乱码久久久久| 欧美一区三区三区高中清蜜桃 | 亚洲第一页在线| 国产精品福利在线| 欧美成人国产一区二区| 亚洲欧美另类国产| 亚洲国产欧美日韩另类综合| 小黄鸭视频精品导航| 亚洲韩国精品一区| 黄色成人精品网站| 欧美系列精品| 欧美日韩一区国产| 欧美激情精品久久久久久蜜臀 | 亚洲美女性视频| 国产精品久久777777毛茸茸| 欧美日韩国产区| 欧美激情一区二区三区成人| 久久女同精品一区二区| 欧美gay视频激情| 久久久久国产精品午夜一区| 午夜国产精品视频免费体验区| 99精品欧美一区| 日韩视频免费观看高清在线视频| 亚洲黄色影片| 欧美国产日韩精品| 欧美aa在线视频| 久热精品在线视频| 欧美激情一区二区三区成人| 久久一区二区三区四区| 欧美视频中文字幕| 免费高清在线视频一区·| 久久综合亚州| 久久露脸国产精品| 欧美日韩久久精品| 国产精品每日更新在线播放网址| 欧美日韩综合| 国产亚洲欧洲一区高清在线观看| 激情自拍一区| 国产精品99久久久久久人| 久久国产精品第一页| 久久天天狠狠| 亚洲国产精品久久久久秋霞蜜臀 | 久久免费午夜影院| 亚洲欧洲日夜超级视频| 亚洲欧美日韩国产综合| 麻豆av福利av久久av| 国产精品电影观看| 亚洲美女啪啪| 欧美国产一区二区| 久久精品在线视频| 国产精品分类| 精品成人a区在线观看| 一本一道久久综合狠狠老精东影业| 午夜日韩激情| 一二美女精品欧洲| 欧美激情中文字幕一区二区 | 久久免费视频观看| 亚洲影院色在线观看免费| 欧美成年视频| 韩国福利一区| 久久久综合网| 久久国产精品黑丝| 国产字幕视频一区二区| 美女脱光内衣内裤视频久久影院| 午夜欧美大尺度福利影院在线看| 国产精品福利在线| 亚洲视频在线一区观看| 日韩一级在线| 国产精品久久精品日日| 欧美在线黄色| 看欧美日韩国产| 国产女优一区| 久久琪琪电影院| 久久久精品一区| 国产视频精品网| 久久久免费精品视频| 久久久777| 亚洲福利视频一区| 欧美激情成人在线视频| 欧美丝袜一区二区| 久久久7777| 欧美激情视频一区二区三区不卡| 亚洲精品国产欧美| 9久草视频在线视频精品| 国产精品久久一级| 久久久噜噜噜久久人人看| 老司机免费视频久久| 亚洲一区久久| 久久一二三区| 午夜精品久久| 欧美日韩日本网| 老司机午夜精品| 国产精品美女视频网站| 欧美xart系列在线观看| 国产欧美日韩不卡| 亚洲第一黄网| 国产欧美日韩麻豆91| 亚洲黄色大片| 亚洲国产综合视频在线观看| 久久国产天堂福利天堂| 久久超碰97中文字幕| 国产主播喷水一区二区| 亚洲精品视频免费在线观看| 国产亚洲一区二区三区在线播放 | 国产精品国产精品国产专区不蜜| 欧美成人日韩| 在线不卡视频| 一区二区三区高清视频在线观看| 99国产精品久久久久老师| 久久色在线观看| 欧美99在线视频观看| 亚洲激情综合| 美女图片一区二区| 国产伊人精品| 欧美一区二区三区的| 久久国产精品第一页| 一区二区三区在线免费视频| 久久午夜精品| 欧美成人午夜| 日韩一级大片在线| 国产精品v日韩精品v欧美精品网站 | 亚洲欧美日韩直播| 国产精品久久久久久久免费软件| 99国产精品久久久久久久| 亚洲伊人网站| 尤物九九久久国产精品的分类| 欧美aⅴ一区二区三区视频| 9l视频自拍蝌蚪9l视频成人 | 香蕉久久夜色| 尤物九九久久国产精品的特点 | 久久阴道视频| 亚洲精品美女在线观看播放| 欧美 日韩 国产在线| 夜夜嗨av一区二区三区中文字幕| 亚洲欧美日本国产有色| 一区精品久久| 国产精品视频大全| 麻豆乱码国产一区二区三区| 亚洲精品一区二区三区av| 性欧美1819sex性高清| 亚洲国产天堂久久综合网| 国产精品久久久久9999| 久久精品视频网| 一道本一区二区| 亚洲国产一区二区a毛片| 久久av一区二区| 在线亚洲欧美专区二区| 亚洲国产精品久久人人爱蜜臀| 国产精品国产| 欧美激情一级片一区二区| 久久精品人人做人人爽电影蜜月| 欧美va天堂va视频va在线| 性做久久久久久| 亚洲永久免费av| 日韩视频精品在线| 国产一区自拍视频| 欧美日韩一级片在线观看| 欧美成人中文| 美日韩免费视频| 亚洲综合电影| 午夜久久黄色| 性色av一区二区三区| 欧美一区二区视频在线观看| 久久久久国产一区二区三区| 蜜臀久久99精品久久久久久9| 美女黄色成人网| 欧美国产精品一区| 亚洲激情在线播放| 亚洲精品国产精品国自产观看| 亚洲精品1区| 亚洲精品一区二区三区婷婷月| 欧美激情精品久久久久久蜜臀| 欧美激情精品久久久久久久变态|