精品欧美一区二区三区在线观看 _久久久久国色av免费观看性色_国产精品久久在线观看_亚洲第一综合网站_91精品又粗又猛又爽_小泽玛利亚一区二区免费_91亚洲精品国偷拍自产在线观看 _久久精品视频在线播放_美女精品久久久_欧美日韩国产成人在线

Http服務器實現文件上傳與下載(四)

網絡 網絡管理
歡迎大家來到和我一起編寫Http服務器實現文件的上傳和下載,現在我稍微回顧一下之前我說的,第一、二章說明說明了整體的HTTP走向,第三章實現底層的網絡編程。接著這一章我想給大家講的是請求獲取,和響應發送的內容。這里主要講解的響應內容,為什么?因為我們編寫的是一個與瀏覽器交互的HTTP服務器,所以大多數的情況下我們只進行被動的應答。

一、引言

歡迎大家來到和我一起編寫Http服務器實現文件的上傳和下載,現在我稍微回顧一下之前我說的,***、二章說明說明了整體的HTTP走向,第三章實現底層的網絡編程。接著這一章我想給大家講的是請求獲取,和響應發送的內容。這里主要講解的響應內容,為什么?因為我們編寫的是一個與瀏覽器交互的HTTP服務器,所以大多數的情況下我們只進行被動的應答。

這就是一種"提問--回答"的問題。其實在講解這章的時候,我本來準備給大家講解一下Linux一些信號中斷的問題。因為在網絡層發送的時候,系統會發送一些信號給我們的應用程序,所以會導致我們的程序意外的終止。但當我寫的這篇博客的時候我又放棄,我想在講流程走向的時候再提一個中斷捕獲吧。在這個請求響應層的類其實真正的設計需要很多的內容,這里就是HttpResponse類和HttpRequest類的設計,在j2EE中,我們編寫Servlet的時候就用到了這2個類,如HttpServletResquest,HttpServletResponse的類,如果對這里面的內容感興趣,可以下載tomcat,在servlet-api.jar包里面有這些類。

在本文的實現中,Request類只包含了一個獲取請求頭和解析頭的一些方法。如何解析頭,我在《Http服務器實現文件上傳與下載(一)》已經講解了,讀者只需要對其封裝一個類即可。

二、HttpRequest類

請求消息的解析是通過被定義在命名空間為Http的類名為HttpRequest。這個類的構造函數接受一個套接字,就是跟我們連接的那個套接字,在網絡層我們已經講過了,然后在getHeader方法中調用server_read()獲取請求頭,然后通過Utils::parseHeader()函數進行解析。這樣把解析的內容放入需要的string中,當前不太需要的直接在map里面。這里我直接貼出代碼,大家看起來也比較容易。這里我在這一章節我主要講解的是文件的下載,所以主要會對HttpResponse的類的分析,而HttpRequest類只貼出目前需要的內容。

頭文件(include/httprequest.h)

 

1 #ifndef HTTPREQUEST_H
2 #define HTTPREQUEST_H
3 #include "socket.h"
4 #include 
5 #include 
6 #include 
7 namespace Http{
8 class HttpRequest{
9 public:
10 HttpRequest(TCP::Socket &c);
11 virtual ~HttpRequest();
12 std::map
13 ......
14 protected:
15 private:
16 std::string method;
17 std::string url;
18 std::string host;
19 TCP::Socket &s;
20 };
21 }
22
23 #endif // HTTPREQUEST_H

 

源文件(src/httprequest.cpp)

 

1 #include "httprequest.h"
2 #include "utils.h"
3 namespace Http{
4 HttpRequest::HttpRequest(TCP::Socket &c):s(c){
5 }
6
7 HttpRequest::~HttpRequest(){
8 }
9 std::map
10 char recvBuf[1024];
11 memset(recvBuf,0,sizeof(recvBuf));
12 s.server_read(confd,recvBuf,1024);
13 std::cout<
14 std::map
15 method =mp["Method"];
16 url=mp["Url"];
17 host=mp["Host"];
18 return mp;
19 }
20 ......
21 }

 

三、HttpResponse類

當我們訪問Http服務器的時候,瀏覽器顯示可以下載的文件的內容,然后我們點擊需要下載的文件,然后文件就可下載了。首先我點擊這個文件這個URL時,瀏覽器給我們發送一些請求頭,例如它發送一個為/download/HttpServer.zip這個URL,說明他需要下載的文件,而且該文件為HttpServer.zip。在上面我們已經可以用getHeader來捕獲這個請求頭,然后獲取這個URL。之后服務端還是要發送一個響應頭,告訴瀏覽器你的請求我們同意,請求頭結束以空行為標記,接著就是具體的文件的內容了。

在發送響應頭時,還是需要發送協議版本,狀態碼,響應內容類型,文件的長度,文件斷點下載等內容,或者傳輸的時候采用chunk傳輸,但是這里我采用文件的長度來標記。讀者可以自行查看其它方式傳輸內容。特別要注意ed是一定要在響應頭中指定傳輸實體的大小,否則客戶端不知道什么時候結束,這時可能拒絕接收服務端發來的字節。在這個類中,請求下載的文件發送時,我采用sendFile這個函數,這個函數讀取文件就是采用二進制的方式,并且在響應頭中也告知瀏覽器以二進制的方式接收文件。這樣都是以二進制的方式讀取和發送文件才不會出現問題。sendLineFile 和sendIndexFile兩者大致相同,都是采用ASCII文本的方式發送內容,這樣比如HTML這些需要顯示在瀏覽器的內容,可以通過這兩個函數。通過函數名可知在sendLineFile會以文件行的方式讀取,而sendIndexFile文件會把內容寫在同一行上。例如:我們瀏覽器請求一個index.html的內容,這時采用2個sendLineFile和sendIndexFile的顯示效果都是一樣的,但是如果點擊右鍵查看源碼時,sendLineFile的內容是以源文件一樣的,而sendIndexFile發送的內容會都在***行,不會換行。

說了這么多大家也比較清楚了,下面貼出具體一些代碼。

頭文件(include/httpresponse.h)

 

1 #ifndef HTTPRESPONSE_H
2 #define HTTPRESPONSE_H
3 #include "socket.h"
4 #include
5 #include
6 #include
7 #include
8 #include
9 #include
10 #include "utils.h"
11 namespace Http{
12 class HttpResponse{
13 public:
14 HttpResponse(TCP::Socket &c);
15 virtual ~HttpResponse();
16 ssize_t send(int confd,std::string content);
17 ssize_t sendIndexFile(int confd,std::string FileName);
18 ssize_t sendFile(int &confd,std::string FileName,int64_t pos);
19 ssize_t sendLineFile(int confd,std::string file);
20 void setProtocal(std::string);
21 void setStatusCode(std::string);
22 void setServerName(std::string);
23 void setContentType(std::string);
24 void setContentRange(std::string);
25 void setContentLength(int64_t);
26 protected:
27 std::string getHeader() const;
28 private:
29 std::string protocal;
30 std::string statusCode;
31 std::string serverName;
32 std::string contentType;
33 std::string contentLength;
34 std::string contentRange;
35 std::string connection;
36 std::string date;
37 TCP::Socket &s;
38 };
39 }
40 #endif // HTTPRESPONSE_H

 

#p#

源文件(src/httpresponse.cpp)

 

1 #include "httpresponse.h"
2 namespace Http{
3 HttpResponse::HttpResponse(TCP::Socket &c):s(c){
4 protocal="HTTP/1.1";
5 statusCode="200 OK";
6 serverName="Server:(Unix)";
7 contentType="Content-type:text/html";
8 contentLength="Content-length:0";
9 contentRange="Content-Range:0-";
10 connection="Connection:Keep-Alive";
11 time_t timep;
12 time(&timep);
13 char s[50];
14 sprintf(s,ctime(&timep));
15 date="Date:"+std::string(s,s+(strlen(s)-1));
16 }
17
18 HttpResponse::~HttpResponse(){
19 }
20 void HttpResponse::setProtocal(std::string content){
21 protocal=content;
22 }
23 void HttpResponse::setStatusCode(std::string content){
24 statusCode=content;
25 }
26 void HttpResponse::setServerName(std::string content){
27 serverName=content;
28 }
29 void HttpResponse::setContentType(std::string content){
30 contentType="Content-type:"+content;
31 }
32 void HttpResponse::setContentLength(int64_t len){
33 contentLength="Content-length:"+Utils::toString(len);
34 }
35 void HttpResponse::setContentRange(std::string content){
36 contentRange="Content-Range:"+content;
37 }
38 std::string HttpResponse::getHeader() const{
39 std::string h1 =protocal+" "+statusCode+"\r\n";
40 std::string h2 =serverName+"\r\n";
41 std::string h3 =contentType+"\r\n";
42 std::string h4 =contentLength+"\r\n";
43 std::string h5=contentRange+"\r\n";
44 std::string h6=connection+"\r\n";
45 std::string h7=date+"\r\n\r\n";
46 return h1+h2+h3+h4+h5+h6+h7;
47 }
48 ssize_t HttpResponse::send(int confd,std::string content){
49 setContentType("application/octet-stream");
50 setContentLength(content.size());
51 std::string header=getHeader();
52 s.server_write(confd,(char*)header.c_str(),header.size());
53 ssize_t len =s.server_write(confd,(char*)content.c_str(),content.size());
54 s.server_close(confd);
55 return len;
56 }
57 ssize_t HttpResponse::sendLineFile(int confd,std::string file){
58 std::ifstream in(file.c_str());
59 in.seekg(0,std::ios::end);
60 int64_t len = in.tellg();
61 setContentLength(len);
62 std::string header=getHeader();
63 s.server_write(confd,(char*)header.c_str(),header.size());
64 in.seekg(0,std::ios::beg);
65 ssize_t n=0;
66 char buf[1024];
67 while(!in.eof()){
68 bzero(buf,sizeof(buf));
69 in.getline(buf,1024);
70 buf[strlen(buf)]='\n';
71 n+=s.server_write(confd,buf,in.gcount());
72 }
73 s.server_close(confd);
74 return n;
75 }
76 ssize_t HttpResponse::sendIndexFile(int confd,std::string file){
77 std::ifstream in(file.c_str());
78 in.seekg(0,std::ios::end);
79 int64_t len = in.tellg();
80 setContentLength(len);
81 std::string header=getHeader();
82 s.server_write(confd,(char*)header.c_str(),header.size());
83 in.seekg(0,std::ios::beg);
84 char buf[1024];
85 int sendCount=0;
86 while(!in.eof()){
87 memset(buf,0,sizeof(buf));
88 in.getline(buf,1024);
89 sendCount+=s.server_write(confd,buf,in.gcount());
90 }
91 s.server_close(confd);
92 return sendCount;
93 }
94 ssize_t HttpResponse::sendFile(int &confd,std::string fileName,int64_t pos){
95 std::ifstream in(fileName.c_str(),std::ios::binary);
96 in.seekg(0, std::ios::end);
97 std::streampos ps = in.tellg();
98 int64_t len=ps-pos;
99 if(pos!=0){
100 setStatusCode("206 Partial Content");
101 }
102 setContentType("application/octet-stream");
103 setContentLength(len);
104 std::string content="bytes";
105 content+=" "+Utils::toString(pos)+"-"+Utils::toString((int64_t)ps-1)+"/"+Utils::toString(len);
106 setContentRange(content);
107 std::string header=getHeader();
108 std::cout<
109 s.server_write(confd,(char*)header.c_str(),header.size());
110 in.seekg(pos,std::ios::beg);
111 char buf[1024];
112 ssize_t n=0;
113 while(!in.eof()){
114 in.read(buf,1024);
115 n+=s.server_write(confd,buf,in.gcount());
116 }
117 s.server_close(confd);
118 return n;
119 }
120 }

 

在上面響應頭中Content-Range:這個字段,表示文件內容的范圍,在一般情況下都是從0到lenth(file)-1。如果在之前已經下了一些內容后,如果是斷點續下載時,瀏覽器在請求頭中有Range知道,表示從Range的開始字節傳輸,而我們服務器指定Content-Range為Range字段開始,接著發送這些內容即可,實現文件的斷點下載。

責任編輯:何妍 來源: 博客園
相關推薦

2015-10-08 09:38:24

HTTP網絡協議文件傳輸

2015-09-29 09:25:20

HTTP網絡協議

2015-09-28 13:39:13

Http網絡協議HTTP

2015-10-10 16:46:14

HTTP網絡協議文件傳輸

2020-12-02 11:48:05

TFTP

2019-04-23 10:48:55

HTTPTomcat服務器

2018-10-09 09:28:12

HTTPHTTP協作服務器

2011-08-18 16:03:34

iPhone上傳圖片

2022-03-01 20:33:50

服務web項目

2020-06-17 21:39:11

HTTP協議服務器

2010-05-25 13:20:46

http與svn

2017-11-10 08:58:49

Web服務器應用程序

2009-07-03 13:05:47

JSP HTTP服務器

2010-03-22 12:57:46

Java Socket

2018-06-15 10:25:43

Python HTTPFTP服務器

2018-12-06 09:23:33

2019-04-24 15:06:37

Http服務器協議

2009-07-06 17:25:22

JSP HTTP服務器

2009-07-06 17:56:12

JSP HTTP服務器

2019-08-22 15:26:24

HTTP服務器Python
點贊
收藏

51CTO技術棧公眾號

中文字幕a在线观看| 白白操在线视频| 在线观看免费视频a| 天天超碰亚洲| 亚洲电影第1页| 色悠悠久久综合网| gogo久久| 亚洲天堂久久久久久久| 精品在线视频一区二区| 中国老头性行为xxxx| 亚洲无线视频| 色系列之999| 人妻在线日韩免费视频| 精品中文视频| 一本大道久久精品懂色aⅴ| 伊人久久大香线蕉综合75| 日韩中文字幕观看| 激情国产一区二区| 国产成人精品视频在线| 久久精品国产亚洲av高清色欲| 日韩欧美三级| 精品性高朝久久久久久久| 性鲍视频在线观看| 中文另类视频| 欧美日韩免费网站| 精品人妻人人做人人爽| 日韩精品毛片| 久久精品欧美日韩精品| 精品国产乱码一区二区三区四区 | 国产精品免费观看| 成人av在线网站| 亚洲专区国产精品| 在线播放精品视频| 久久综合伊人| 日韩av电影在线播放| 在线观看免费国产视频| 亚洲手机视频| 久久欧美在线电影| 久操视频免费在线观看| 久久久久久久久99精品大| 中文在线不卡视频| 四虎成人免费影院| 日韩精品久久| 中文字幕精品在线| 国产一级淫片久久久片a级| 精品中文字幕一区二区三区av| 日韩精品视频在线播放| 日韩 中文字幕| 亚洲国产合集| 亚洲欧美在线一区二区| 国产精品九九九九九| 亚洲精品亚洲人成在线观看| 亚洲精品第一国产综合精品| 一级特黄a大片免费| 欧美亚洲tv| 亚洲美女在线视频| 在线观看日本中文字幕| 日本电影一区二区| 久久精品91久久久久久再现| 欧美又粗又大又长| 合欧美一区二区三区| 欧美激情中文字幕乱码免费| 国产无码精品一区二区| 国产精品亚洲综合色区韩国| 欧美一级大胆视频| 青青艹在线观看| 另类中文字幕网| 91在线直播亚洲| 日本黄色免费视频| 久久久久久久久久久黄色| 日韩视频专区| 在线观看中文| 精品久久中文字幕| 久热在线视频观看| 2021年精品国产福利在线| 亚洲精品国产精品久久清纯直播 | 制服下的诱惑暮生| 成人午夜大片| 亚洲人午夜精品免费| 欧美a级片免费看| 欧美日韩少妇| 国产成人综合精品| 国产熟女一区二区三区五月婷| 国产高清一区日本| 欧美日本韩国国产| 国产黄网站在线观看| 婷婷开心激情综合| 激情黄色小视频| 懂色av一区二区| 中文字幕欧美日韩va免费视频| 欧美毛片在线观看| 日韩成人伦理电影在线观看| 91久久精品一区二区别| 黄色在线免费观看大全| 亚洲久本草在线中文字幕| 成年人视频网站免费观看| 综合久久av| 亚洲奶大毛多的老太婆| 97在线观看免费高| 噜噜噜躁狠狠躁狠狠精品视频| 91九色在线视频| 久久99久久| 亚洲激情第一区| 国产福利影院在线观看| 999久久久精品一区二区| 中文字幕亚洲无线码a| 日本少妇激情舌吻| 黄网站免费久久| 日韩激情视频| 国产在线精彩视频| 91精品国产aⅴ一区二区| 国产精品扒开腿做爽爽| 在线观看日韩av电影| 91精品视频在线免费观看| 国模吧精品人体gogo| 午夜精品福利一区二区三区av| 三区视频在线观看| 精品国产美女| 欧美中在线观看| 日本黄色大片视频| 亚洲电影在线免费观看| 午夜免费福利网站| 欧美好骚综合网| 国产精品美女网站| 国产在线视频网址| 欧美日韩亚洲精品一区二区三区| 被黑人猛躁10次高潮视频| 日韩欧美高清在线播放| 国产精品第七十二页| 欧美一区二区视频| 狠狠干狠狠久久| 中文字幕三级电影| 夜夜嗨网站十八久久 | 手机看片福利在线| 亚洲线精品一区二区三区八戒| 伊人国产精品视频| 久久久久美女| 91精品国产自产在线| 欧美成人高清在线| 在线不卡的av| 九九热久久免费视频| 美腿丝袜在线亚洲一区| 亚洲欧洲精品一区二区三区波多野1战4| 天天免费亚洲黑人免费| 亚洲人成网站777色婷婷| 圆产精品久久久久久久久久久| 波多野结衣在线aⅴ中文字幕不卡| 日本a在线天堂| 91国内精品| 久久久久久久97| 天堂中文在线官网| 欧美日韩激情网| 国精产品一区二区三区| 日本va欧美va欧美va精品| 亚洲精品免费在线看| 欧美久久久网站| 久久中文字幕视频| 亚洲精品久久久久久动漫器材一区| 亚洲一区二区黄色| 久久久国产精品无码| 亚洲制服少妇| 亚洲开发第一视频在线播放| 亚洲二区av| 欧美激情国产精品| 色播色播色播色播色播在线| 欧美在线一二三四区| 欧美h片在线观看| 粉嫩嫩av羞羞动漫久久久| 黄色国产一级视频| 精品国产91乱码一区二区三区四区| 国产精品免费在线免费| 中日韩高清电影网| 亚洲国产精品一区二区久| www.av88| 亚洲国产一区二区a毛片| 男女黄床上色视频| 久久国产精品99精品国产| www.18av.com| 亚洲素人在线| 91深夜福利视频| 一本大道色婷婷在线| 中文字幕日韩有码| 空姐吹箫视频大全| 欧美日韩亚洲综合一区| 久久久国产精品人人片| 久久亚洲私人国产精品va媚药| 国产色视频在线播放| 国产精品theporn| 亚洲激情一区二区| 欧美亚洲大陆| 97自拍视频| 亚洲日本在线观看视频| 欧美激情xxxx性bbbb| 91美女视频在线| 亚洲国产天堂久久综合| 97人妻精品一区二区三区| 精品久久久久久久久久久久久久| 情侣偷拍对白清晰饥渴难耐| 91在线porny国产在线看| 日韩高清第一页| 麻豆精品网站| 丰满的少妇愉情hd高清果冻传媒| 欧美日韩伦理| 久久草.com| 欧美日韩中出| 国产欧美一区二区白浆黑人| 亚洲少妇视频| 欧美激情女人20p| 天堂中文а√在线| 精品视频在线导航| 国产成人自拍一区| 91精品在线一区二区| 天天爽夜夜爽人人爽| 亚洲二区视频在线| 免看一级a毛片一片成人不卡| 久久综合久久综合亚洲| 久久久国产精品久久久| 国产自产视频一区二区三区| 99热这里只有精品在线播放| 亚洲综合另类| 少妇久久久久久被弄到高潮| 91精品一区国产高清在线gif| 欧美日韩中文国产一区发布| 美女av一区| 粉嫩av免费一区二区三区| 清纯唯美激情亚洲| 亚洲一区二区在线| 国产一区二区三区免费在线| 国产剧情久久久久久| 91精品国产66| 国产精品美女免费| 国产乱子精品一区二区在线观看| 国产成人97精品免费看片| 自拍视频在线看| 26uuu亚洲国产精品| 国产传媒在线观看| 国外成人在线直播| av今日在线| 欧美中文字幕在线| 日韩三区免费| 国产精品99蜜臀久久不卡二区| 另类激情视频| 国产激情久久久| 99精品在免费线偷拍| 国产精品日本精品| 欧美综合社区国产| 91综合免费在线| 超碰成人在线观看| 狠狠色噜噜狠狠色综合久| 红杏成人性视频免费看| 精品免费二区三区三区高中清不卡| 久草在线综合| 欧洲精品国产| 久久婷婷蜜乳一本欲蜜臀| 久久久国产精华液999999| 一区二区日韩欧美| 可以看毛片的网址| 亚洲一区日本| mm131国产精品| 国产乱人伦精品一区二区在线观看| 中文字幕第66页| 成人涩涩免费视频| 成年人网站免费看| 国产精品乱人伦| 欧美日韩三级在线观看| 亚洲成av人片一区二区| 69视频免费在线观看| 精品视频在线免费看| jizz中国女人| 亚洲经典中文字幕| 91av资源在线| 欧美激情xxxxx| 成人在线视频播放| 91系列在线观看| 欧美成人基地| 致1999电视剧免费观看策驰影院| 好看不卡的中文字幕| 日本久久精品一区二区| 国产传媒欧美日韩成人| 老鸭窝一区二区| 亚洲视频一区在线| 中文字字幕在线中文| 91麻豆精品国产91久久久资源速度| 黑人操亚洲女人| 中文字幕精品网| a国产在线视频| 成人在线激情视频| 欧美日韩导航| 中文字幕免费高| 天堂久久一区二区三区| 欧美污在线观看| 欧美激情一区二区三区全黄| 欧美精品videos极品| 在线精品亚洲一区二区不卡| 性做久久久久久久久久| 国产亚洲欧美日韩一区二区| 国产探花视频在线观看| 国产精品久久久久久久久久久久| 视频一区国产| 亚洲一区三区在线观看| 国产日韩视频| 熟女人妻一区二区三区免费看| 欧美激情在线免费观看| 男女视频免费看| 日韩一区二区免费电影| freemovies性欧美| 91国自产精品中文字幕亚洲| 麻豆视频久久| 亚洲高清在线观看一区| 欧美亚洲一区| 中国极品少妇xxxx| 亚洲黄色av一区| 一区二区日韩在线观看| 亚洲欧美精品伊人久久| av资源中文在线| 粉嫩av免费一区二区三区| 一区二区三区四区电影| 性刺激的欧美三级视频| 久久精品人人做人人爽97| 国产精品自拍视频一区| 日韩欧美中文字幕精品| 1区2区3区在线观看| 日韩av电影在线免费播放| 国产乱人伦精品一区| 一级特黄妇女高潮| 国产主播一区二区三区| 亚洲a∨无码无在线观看| 欧美性生活大片视频| 国产高清在线| 国产精品成久久久久三级| 亚洲精品小区久久久久久| 国内外成人激情视频| av在线一区二区| 日本在线视频免费观看| 精品国产伦一区二区三区观看体验| 手机av在线播放| 成人在线观看91| 伊人成人在线视频| 99精品一区二区三区无码吞精| 亚洲午夜激情网页| 日本xxxxxwwwww| 136fldh精品导航福利| 天堂99x99es久久精品免费| 91好吊色国产欧美日韩在线| 99久久伊人精品| 国产成人精品一区二三区| 日韩精品免费电影| 毛片无码国产| 午夜老司机精品| 韩国女主播成人在线观看| 日本在线一级片| 精品久久一区二区| 97人人在线视频| 欧美二区三区| 免费看欧美女人艹b| 国产成人自拍网站| 亚洲成人久久网| 深夜成人影院| 中文字幕免费在线不卡| 国产精品69毛片高清亚洲| 久久精品久久国产| 亚洲人成电影在线观看天堂色| 主播大秀视频在线观看一区二区| 一本一本a久久| 国产精品一区2区| 日韩熟女精品一区二区三区| 亚洲欧洲偷拍精品| 亚洲成人a级片| 激情伊人五月天| 欧美激情一二三区| aaa国产视频| 欧洲日本亚洲国产区| 久久精品av| 男人网站在线观看| 欧美日韩的一区二区| 日本伦理一区二区| 欧美国产综合视频| 国模少妇一区二区三区| 日韩经典在线观看| 日韩在线视频二区| 国产精品白浆| 国产成人黄色网址| 亚洲国产毛片aaaaa无费看| 国产天堂素人系列在线视频| 亚洲精品女av网站| 日韩有码一区二区三区| 国产高清在线免费观看| 亚洲欧美综合另类中字| 久久综合给合| 免费在线观看的毛片| 亚洲AV无码成人精品区明星换面| 日韩免费看网站| 成人av色网站| 国产男女在线观看| 亚洲黄网站在线观看| 亚洲s色大片| 久久久久久国产精品mv| 国产精品系列在线观看| 最好看的日本字幕mv视频大全| 久久男人的天堂|