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

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>
            亚洲国产精品毛片| 亚洲欧美精品伊人久久| 欧美国产精品va在线观看| 一区二区欧美在线| 麻豆成人在线观看| 国产欧美精品| 亚洲欧美卡通另类91av | 亚洲制服欧美中文字幕中文字幕| 久久综合福利| 一区二区三区在线免费视频| 亚洲欧美在线高清| 亚洲欧美一区二区激情| 国产精品多人| 亚洲影院免费观看| 亚洲最新色图| 欧美性感一类影片在线播放| aa级大片欧美三级| 一区二区动漫| 欧美日韩专区| 亚洲欧美另类综合偷拍| 亚洲视频在线播放| 国产伦精品一区二区三区照片91| 欧美一级免费视频| 欧美一区二区三区久久精品茉莉花 | 日韩天堂在线观看| 欧美日韩成人精品| 一区二区激情| 亚洲一区二区综合| 国产日产精品一区二区三区四区的观看方式 | 美女黄色成人网| 亚洲国产精品va在线看黑人| 模特精品在线| 欧美日韩精品在线播放| 亚洲综合色在线| 欧美在线网站| 亚洲欧洲日韩综合二区| av成人黄色| 韩国av一区二区三区| 欧美大片一区二区三区| 欧美四级伦理在线| 午夜精品国产更新| 欧美呦呦网站| 亚洲激情第一页| 日韩亚洲一区在线播放| 国产精品综合网站| 亚洲缚视频在线观看| 狠狠v欧美v日韩v亚洲ⅴ| 亚洲男人的天堂在线aⅴ视频| 国产噜噜噜噜噜久久久久久久久| 久久精品国产在热久久| 免费观看在线综合| 午夜国产不卡在线观看视频| 久久免费精品视频| 亚洲在线中文字幕| 久久久久久久久伊人| 亚洲婷婷在线| 久久另类ts人妖一区二区| 中文av字幕一区| 免费成人高清| 欧美中文在线观看| 欧美片第一页| 久久久久久久久久久久久9999 | 欧美日本在线视频| 久久精品91久久久久久再现| 免费观看成人网| 欧美一区二区免费| 免费在线一区二区| 久久精品99国产精品| 欧美日韩在线电影| 亚洲福利视频免费观看| 国产三级欧美三级| 一区二区三区四区五区视频| 在线欧美一区| 亚洲欧美日韩第一区| 亚洲天堂视频在线观看| 欧美国产第一页| 欧美成人在线免费视频| 国产一区二区你懂的| 亚洲视频免费在线观看| 一二三四社区欧美黄| 久久野战av| 久久天堂av综合合色| 欧美性事在线| 亚洲视频福利| 亚洲欧美国产va在线影院| 欧美日韩国产经典色站一区二区三区 | 久久人人爽人人| 国产精品一区久久久久| 一本不卡影院| 日韩亚洲欧美综合| 欧美国产大片| 亚洲精品国产视频| 亚洲精品色图| 欧美日韩国产电影| 亚洲精品国偷自产在线99热| 99综合视频| 欧美性一二三区| 一区二区精品在线观看| 亚洲综合色在线| 国产精品视频专区| 亚洲性色视频| 久久精品国产96久久久香蕉| 国产视频欧美视频| 久久国产视频网站| 毛片一区二区| 亚洲国产日韩欧美一区二区三区| 久久久久国产精品www| 久久综合福利| 亚洲国产日韩欧美在线图片| 欧美18av| 欧美成人免费一级人片100| 日韩视频亚洲视频| 中文亚洲欧美| 亚洲一区二区三区777| 欧美视频日韩视频在线观看| 亚洲小视频在线| 久久久久久9| 亚洲精品欧美| 国产精品美女诱惑| 久久精品国产清高在天天线 | 午夜欧美大尺度福利影院在线看| 国产一区二区成人久久免费影院| 久久本道综合色狠狠五月| 久久午夜影视| 日韩亚洲欧美综合| 国产欧美亚洲精品| 欧美阿v一级看视频| 亚洲一二区在线| 欧美国产一区二区三区激情无套| 一区电影在线观看| 狠狠色伊人亚洲综合成人| 欧美二区乱c少妇| 亚洲天堂av在线免费| 久久这里只精品最新地址| 亚洲欧洲日产国产综合网| 国产视频久久久久久久| 欧美.www| 欧美专区福利在线| 一区二区av在线| 欧美1区2区3区| 午夜精品福利一区二区三区av| 亚洲国产精品视频| 国产亚洲美州欧州综合国| 欧美日韩国产综合视频在线| 久久久久**毛片大全| 亚洲一二区在线| 一区二区三区导航| 亚洲人久久久| 亚洲国产成人在线视频| 久久视频一区| 久久精品国产欧美激情| 亚洲影视中文字幕| 99re热精品| 亚洲日韩中文字幕在线播放| 国产日韩欧美精品| 国产精品国产馆在线真实露脸| 欧美成人免费播放| 久久免费视频在线观看| 欧美一级网站| 午夜久久电影网| 亚洲伊人网站| 一本色道88久久加勒比精品| 亚洲高清激情| 欧美www视频在线观看| 久久久久久亚洲精品中文字幕| 午夜视黄欧洲亚洲| 欧美亚洲视频在线观看| 亚洲欧美日韩系列| 亚洲综合电影一区二区三区| 99re视频这里只有精品| av成人激情| 一区二区三区 在线观看视| 亚洲精品久久嫩草网站秘色| 亚洲人成网站在线播| 亚洲精品视频一区| av不卡在线观看| 亚洲影视在线播放| 亚洲欧美国产三级| 午夜视频一区在线观看| 欧美中文字幕在线播放| 久久精品一区二区三区不卡| 久久精品国产综合| 欧美a级片一区| 亚洲国产美女久久久久| 一本色道久久综合亚洲精品婷婷| 99精品国产99久久久久久福利| 9久re热视频在线精品| 亚洲一区二区精品在线| 性做久久久久久久久| 久久久久成人精品| 免费一级欧美片在线观看| 欧美福利一区二区| 亚洲美女福利视频网站| 91久久久久久国产精品| 一区二区欧美在线| 久久精品国产精品亚洲综合| 免费成人在线视频网站| 欧美日韩国产另类不卡| 国产欧美日韩免费| 亚洲国产精品va在线观看黑人|