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

Javen-Studio 咖啡小屋

http://javenstudio.org - C++ Java 分布式 搜索引擎
Naven's Research Laboratory - Thinking of Life, Imagination of Future

  C++博客 :: 首頁 :: 新隨筆 :: 聯(lián)系 :: 聚合  :: 管理 ::
  24 隨筆 :: 57 文章 :: 170 評(píng)論 :: 4 Trackbacks

IP 層的封裝

C++ 通用框架的設(shè)計(jì) 作者: naven

1?????????? IP 層封裝介紹

TCP/UDP 是網(wǎng)絡(luò)編程的基礎(chǔ)技術(shù),分別代表面向連接的穩(wěn)定的網(wǎng)絡(luò)通信技術(shù)和非連接方式的廣播形式的網(wǎng)絡(luò)通信技術(shù),它們都建立在 IP 層之上,所以 IP 層的封裝尤為重要。 IP 層的封裝接口主要包括 DNS 的查詢、 IP 地址和域名的互查、本地 IP 及名字的查詢等,目前 IP 層使用的主要實(shí)現(xiàn)技術(shù)是 IPv4 ,但是未來會(huì)慢慢升級(jí)到容量更大的 IPv6 ,所以 IP 層的封裝需要要同時(shí)支持這兩種協(xié)議。操作系統(tǒng)實(shí)現(xiàn)它們都是通過增加新的 API 以及新的地址結(jié)構(gòu)實(shí)現(xiàn)的,開發(fā)者編寫跨協(xié)議的網(wǎng)絡(luò)應(yīng)用需要編寫較復(fù)雜的程序來區(qū)分 IPv4 IPv6 協(xié)議,優(yōu)秀的 ACE 框架則通過條件編譯來支持 IPv6 ,好像不能同時(shí)在程序中使用 IPv4 IPv6 協(xié)議。本 C++ 框架參考 Java InetAddress 及相關(guān)類實(shí)現(xiàn)了類似跨協(xié)議的 IP 層封裝,編寫網(wǎng)絡(luò)應(yīng)用基本不用考慮兩種協(xié)議的不同,應(yīng)為它們對(duì)外的接口類都是 InetAddress ,另外同時(shí)提供了與 Java 一樣簡單的域名和 IP 地址互查的接口,使用非常容易。

?

主要有如下一些類

?

class AbstraceInetAddress ???????????????????????? IP 地址的抽象類,定義 IP 類的方法

class InetAddress?????????????????????????????????????????? 表示 IP 地址的接口類

class Inet4Address?? ?????????????????? ???????? 表示 IPv4 協(xié)議的 IP 地址實(shí)現(xiàn)類

class Inet6Address?? ?????????????????? ???????? 表示 IPv6 協(xié)議的 IP 地址實(shí)現(xiàn)類

class SocketAddress?????????????????? ??????????????????????????? 表示以域名 /IP/PORT 標(biāo)識(shí)的網(wǎng)絡(luò)地址 Abstract

class InetSocketAddress???????????????????? 表示以域名 /IP/PORT 標(biāo)識(shí)的網(wǎng)絡(luò)地址實(shí)現(xiàn)類

???????? class NameService????????????????????????????????????????? 內(nèi)部使用的訪問域名服務(wù)的類

?

對(duì)于 IP 尋址,有如下幾個(gè)類: InetAddress Inet4Address Inet6Address IPv4 的實(shí)現(xiàn)類 Inet4AddressImpl 使用一個(gè) 32 位的 unsignednumber 標(biāo)識(shí),一個(gè) IPv4 地址形式為 nnn.nnn.nnn.nnn ,其中 n 為一個(gè)整數(shù),例于 129.250.35.250 。而 IPv6 的實(shí)現(xiàn)類 Inet6AddressImpl 使用一個(gè) 128 位的 unsigned number 標(biāo)識(shí),形式如同 x:x:x:x:x:x:x:x ,其中 x 表示一個(gè)十六進(jìn)制的數(shù)字,例于 1080:0:0:0:8:800:200C:417A

?

對(duì)于 Socket 尋址,有如下兩個(gè)類: SocketAddress InetSocketAddress 。其中 SocketAddress 是一個(gè) abstract socket 地址,不依賴于一個(gè)特定的協(xié)議,它提供給實(shí)現(xiàn)特定協(xié)議的子類來使用。 InetSocketAddress SocketAddress 的一個(gè)子類,它表示一個(gè) IP 類的 socket 地址,包括一個(gè) IP 地址(如 129.250.35.250 )和端口(如 80 ),或者包括一個(gè)域名(如 coastnews.com )和一個(gè)端口(如 1000 ),或者僅僅包括一個(gè)端口(如 1010 )。

2?????????? Hello World!

下面的程序示例如何用上面的類進(jìn)行 IP 查詢操作:

?

void ?main()?
{
????
// ?定義IP地址數(shù)組以存儲(chǔ)IP地址列表
????InetAddressArray?iaa;?
????
// ?調(diào)用InetAddress方法獲取此域名的所有IP,并存放到數(shù)組iaa中
???? int ?cnt? = ?InetAddress::getAllByName( " www.google.com " ,?iaa);?
????
????
// ?定義數(shù)組的迭代器
????InetAddressArray::iterator?it(iaa);?
????
// ?遍歷數(shù)組,列出所有IP地址
???? while (? ! it.done()?)? {
????????
// ?輸出IP地址的字符串形式
????????printf( " %s\n " ,?it -> getHostAddress().c_str());?
????????
// ?迭代器向前移一位
????????it.advance();?
????}

}

?

程序輸出如下:

?

66.102.7.99

66.102.7.104

66.102.7.147

?

3?????????? AbstractInetAddress

此類定義一個(gè) Internet Procotol IP )地址類的接口,類定義如下:

?

?

class ?AbstractInetAddress?
{

protected :?
????
/* *?
?????*?Specify?the?address?family:?Internet?Protocol,?Version?4
?????*?@since?1.4
?????
*/

????
const ? static ? int ?IPv4? = ?INET_FAMILY_IPV4;

????
/* *?
?????*?Specify?the?address?family:?Internet?Protocol,?Version?6
?????*?@since?1.4
?????
*/

????
const ? static ? int ?IPv6? = ?INET_FAMILY_IPV6;

????
/* *?
?????*?Specify?address?family?preference?
?????
*/

????
static ?BOOL?preferIPv6Address;?
????
????
/* *?
?????*?Used?to?store?the?name?service?provider?
?????
*/

????
static ?NameService? & nameService;?

????
/* *?
?????*?Used?to?pointer?to?the?actual?address?implemented?
?????
*/

????
static ?InetAddressImplAutoPtr?_impl;?

????
virtual ?InetAddressAutoPtr?clone()? = ? 0 ;?

public :?
????
/* *
?????*?Destructor?must?implemented.?
?????
*/

????
virtual ? ~ AbstractInetAddress()? {} ?

????
/* *
?????*?Utility?routine?to?check?this?InetAddress.?
?????
*/

????
virtual ?BOOL?isMulticastAddress()? = ? 0 ;?
????
virtual ?BOOL?isAnyLocalAddress()? = ? 0 ;?
????
virtual ?BOOL?isLoopbackAddress()? = ? 0 ;?
????
virtual ?BOOL?isLinkLocalAddress()? = ? 0 ;?
????
virtual ?BOOL?isSiteLocalAddress()? = ? 0 ;?
????
virtual ?BOOL?isMCGlobal()? = ? 0 ;?
????
virtual ?BOOL?isMCNodeLocal()? = ? 0 ;?
????
virtual ?BOOL?isMCLinkLocal()? = ? 0 ;?
????
virtual ?BOOL?isMCSiteLocal()? = ? 0 ;?
????
virtual ?BOOL?isMCOrgLocal()? = ? 0 ;?

????
virtual ?SockAddr?getAddress()? = ? 0 ;?
????
virtual ?String?getHostAddress()? = ? 0 ;?
????
virtual ?BOOL?isUnresolved()? = ? 0 ;?

????
/* *
?????*?Compares?this?object?against?the?specified?object.
?????*?The?result?is?<code>true</code>?if?and?only?if?the?argument?is
?????*?not?<code>null</code>?and?it?represents?the?same?IP?address?as
?????*?this?object.
?????*?<p>
?????*?Two?instances?of?<code>InetAddress</code>?represent?the?same?IP
?????*?address?if?the?length?of?the?byte?arrays?returned?by
?????*?<code>getAddress</code>?is?the?same?for?both,?and?each?of?the
?????*?array?components?is?the?same?for?the?byte?arrays.
?????*
?????*?@param???obj???the?object?to?compare?against.
?????*?@return??<code>true</code>?if?the?objects?are?the?same;
?????*??????????<code>false</code>?otherwise.
?????
*/

????BOOL?equals(AbstractInetAddress?
& addr)?
????
{
????????
return ?getAddress()? == ?addr.getAddress()? ? ?TRUE?:?FALSE;?
????}


}
;

?

4?????????? InetAddress

此類實(shí)現(xiàn)一個(gè) Internet Procotol IP )地址,一個(gè) IP 地址即可以是用一個(gè) 32-bit unsigned 數(shù)來表示,也可以用一個(gè) 128-bit unsgined 數(shù)來表示,它內(nèi)部實(shí)現(xiàn)了一個(gè)底層的協(xié)議如 UDP TCP 協(xié)議。 IP 地址的結(jié)構(gòu)定義在 RFC790 Assigned Numbers http://www.ietf.org/rfc/rfc790.txt RFC1918 Address Allocation for Private Internets http://www.ietf.org/rfc/rfc1918.txt RFC2365 Administratively Scoped IP Multicast http://www.ietf.org/rfc/rfc2365.txt RFC2373 Version 6 Addressing Architecture http://www.ietf.org/rfc/rfc2373.txt 。一個(gè) InetAddress 的實(shí)體由一個(gè) IP 地址和一個(gè)可能它通訊的 host name 組成,這個(gè) host name 依賴于它是否使用一個(gè) host name 來構(gòu)造,或者它是否已經(jīng)做了 host name 決議的倒裝( reverse host name resolution )。

InetAddress 類的定義如下:

?

class ?InetAdress?:? public ?AbstractInetAddress
{
????
/* *
?????*?@serial
?????
*/

????String?_hostName;?

????
/* *
?????*?Specifies?the?address?family?type,?for?instance,?'1'?for?IPv4
?????*?addresses,?and?'2'?for?IPv6?addresses.
?????*
?????*?@serial
?????
*/

????
int ?_family;?

????
/* *?
?????*?Used?to?store?the?best?available?hostname?
?????
*/

????String?_canonicalHostName;?

????
/* *?
?????*?Used?to?pointer?to?the?actual?address?object?
?????
*/

????InetAddressAutoPtr?_ia;
}
;

?

?

5?????????? NameService

這個(gè)類實(shí)現(xiàn)一個(gè)名字服務(wù)的接口供 InetAddress 查詢 IP 及其協(xié)議類型使用,它有如下一些方法:

?

class ?NameService
{
????
/* *
?????*?The?gethostbyaddr?function?retrieves?the?host?information?
?????*?corresponding?to?a?network?address.
?????*?
?????*?Note??The?gethostbyaddr?function?has?been?deprecated?by?the?
?????*?introduction?of?the?getnameinfo?function.?Developers?creating?
?????*?socket?applications?are?urged?to?use?the?getnameinfo?function?
?????*?instead?of?the?gethostbyaddr?function.?See?Remarks.
?????
*/

????
int ?getHostByAddr(SockAddr? & addr,?String? & host);?

????
/* *
?????*?Lookup?hostname?in?name?service.?If
?????*?found?return?address?and?return?count,?-1?if?not?found.?
?????*
?????*?@param?host??host?name?to?lookup?
?????*?@param?addrs?return?the?address?list?that?found?
?????*?@return?found?addresses?count,?-1?if?not?found?or?error.?
?????
*/

????
int ?lookupAllHostAddr( const ?String? & host,?InetAddressArray? & addrs);?

????
/* *
?????*?Lookup?host?port?with?service?name?and?protocol?in?name?service.?If
?????*?found?return?port?and?return?count,?-1?if?not?found.?
?????*
?????*?@param?service??host?service?to?lookup?
?????*?@param?protocol?service?protocol,?default?is?"TCP"??
?????*?@return?host?port,?-1?if?not?found?or?error.?
?????
*/

????
int ?lookupHostPort( const ?String? & service,? const ?String? & protocol? = ? " TCP " );
}
;

?

?

6?????????? Inet4Adress

這個(gè)類實(shí)現(xiàn)一個(gè) Internet Protocol version 4 (IPv4) 協(xié)議地址,定義在: RFC790 Assigned Numbers http://www.ietf.org/rfc/rfc790.txt RFC1918 Address Allocation for Private Internets http://www.ietf.org/rfc/rfc1918.txt RFC2365 Administratively Scoped IP Multicast http://www.ietf.org/rfc/rfc2365.txt 。一個(gè) IPv4 地址的文本表示法使用如下一個(gè)格式輸入:

?

d.d.d.d

d.d.d

d.d

d

?

當(dāng)四個(gè)部分都被指定后,每一個(gè)會(huì)被解釋為一個(gè) assigned 字節(jié)的數(shù)據(jù),從左到右,附值給一個(gè)四個(gè)字節(jié)的 IPv4 地址。此類的定義如下:

?

class ?Inet4Adress?:? public ?AbstractInetAddress
{
????
/* *
?????*?Holds?a?32-bit?IPv4?address.
?????*
?????*?@serial
?????
*/

????
int ?_address;

}
;

?

7?????????? Inet6Adress

這個(gè)類實(shí)現(xiàn)一個(gè) Internet Protocol version 6 (IPv6) 協(xié)議地址,定義在: RFC2373 IP Version 6 Addressing Architecture http://www.ietf.org/rfc/rfc2373.txt 。一個(gè) IPv6 地址的文本表示法使用如下一個(gè)格式輸入:

首選的格式是 x:x:x:x:x:x:x:x ,其中所有的“ x ”是表示地址的 8 個(gè) 16-bit 塊的 16 進(jìn)制數(shù)值,這是一個(gè)完整的格式,舉例如下:

?

1080:0:0:0:8:800:200C:417A

?

需要注意的是以 0 開始的欄位是無必要寫的,然而在每個(gè)欄位中必需有一個(gè)數(shù)字,除了如下描述的情形外:

由于一些分配了確定類型的 IPv6 地址的方法,它將為地址容納一個(gè)長的 zero bit strings 所共有,為了使得寫這些包含了 zero bit 的地址更容易,所以使用 :: ”來表示多個(gè)連續(xù)為 0 的欄位組,而“ :: ”在一個(gè)地址中只能出現(xiàn)一次,“ :: ”還能被用來壓縮一個(gè)地址中以 0 開始到 0 結(jié)尾的欄位組,例如:

?

1080::8:800:200C:417A

?

一種可替換的格式在有時(shí)候更為便利,但處理混合有 IPv4 IPv6 協(xié)議的節(jié)點(diǎn)如 x:x:x:x:x:x:d.d.d.d ,其中所有的“ x ”表示地址的 6 個(gè) high-order 16-bit 部分的十六進(jìn)制數(shù),而其它的“ d ”表示標(biāo)準(zhǔn)的 IPv4 地址的 4 個(gè) low-order 8-bit 部分的十進(jìn)制數(shù),例如:

?

::FFFF:129.144.52.38

::129.144.52.38

?

其中“ ::FFFF:d.d.d.d ”和“ ::d.d.d.d ”分別地表示一個(gè) IPv4-mapped IPv6 地址和一個(gè) IPv4-compatible IPv6 地址,需要注意的是 IPv4 部分必須是 d.d.d.d ”格式,以下的格式都是不正確的:

?

::FFFF:d.d.d

::FFFF:d.d

::d.d.d

::d.d

?

但是下面的格式卻是合法的:

?

::FFFF:d

?

然而它是一個(gè)表示 IPv4-compatible IPv6 地址的非傳統(tǒng)的表示格式,

?

::255.255.0.d

?

其中的“ ::d ”符合一個(gè)通常的 IPv6 地址,如

?

0:0:0:0:0:0:0:d

?

對(duì)于一個(gè)需要返回文本格式的地址的方法, Inet6Address 將返回完整的格式,因?yàn)樗欠浅C鞔_的,當(dāng)在與其他文本數(shù)據(jù)結(jié)合使用的時(shí)候。

?

Inet6Address 類定義如下:

?

class ?Inet6Adress?:? public ?AbstractInetAddress
{
????
/* *?
?????*?cached?scope_id?-?for?link-local?address?use?only.
?????
*/

????
int ?_cached_scope_id;?

????
/* *
?????*?Holds?a?128-bit?(16?bytes)?IPv6?address.
?????*
?????
*/

????
int ?_ipaddress[ 16 ];
}
;

?

?

8?????????? SocketAddress 類和 InetSocketAddress

SocketAddress 類實(shí)現(xiàn)了一個(gè)不與任何一種協(xié)議綁定的 Socket 地址,它是一個(gè)抽象類,這表明必須使用它的綁定了特定協(xié)議的子類來表示 Socket 地址的實(shí)現(xiàn)。它為 sockets binding connecting 或者 return values 提供一個(gè)不可變的對(duì)象。

InetSocketAddress 類實(shí)現(xiàn)了一個(gè) IP Socket Address (即一個(gè) IP address 加一個(gè) port 端口),它還能是一對(duì) host name 加一個(gè) port 端口,此時(shí)會(huì)嘗試去查找確定 host name 的實(shí)際地址。它的定義如下所示:

?

class ?InetSocketAddress?:? public ?SocketAddress?
{
????
/* *
?????*?The?hostname?of?the?Socket?Address
?????*?@serial
?????
*/
?????
????String?_hostname;?
????
????
/* *?
?????*?The?IP?address?of?the?Socket?Address
?????*?@serial
?????
*/

????InetAddress?_addr;?
????
????
/* *
?????*?The?port?number?of?the?Socket?Address
?????*?@serial
?????
*/
???
????
int ?_port;
}
;

?

?

?

C++ 通用框架的設(shè)計(jì) 作者: naven 日期: 2006-3-19

posted on 2006-03-19 12:54 Javen-Studio 閱讀(2962) 評(píng)論(4)  編輯 收藏 引用

評(píng)論

# re: IP層的封裝(Java的InetAddress類的C++實(shí)現(xiàn)) 2006-03-19 22:55 fiestay
看樣子還不錯(cuò),能否提供實(shí)現(xiàn)代碼?  回復(fù)  更多評(píng)論
  

# re: IP層的封裝(Java的InetAddress類的C++實(shí)現(xiàn)) 2006-04-17 10:54 Javen-Studio
等我有時(shí)間我先發(fā)布一個(gè)庫給大家試用看看,謝謝支持!  回復(fù)  更多評(píng)論
  

# re: IP層的封裝(Java的InetAddress類的C++實(shí)現(xiàn)) 2006-06-29 21:22 scott
please show us the missing source code. thnx  回復(fù)  更多評(píng)論
  

# re: IP層的封裝(Java的InetAddress類的C++實(shí)現(xiàn)) 2006-06-30 09:37 Javen-Studio
快了,我會(huì)發(fā)布一個(gè)windows下的試用版本
  回復(fù)  更多評(píng)論
  


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


青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <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>
            欧美理论电影在线观看| 亚洲视频综合| 久久五月天婷婷| 一区二区三区四区五区精品| 久久综合色8888| 久久福利毛片| 国产在线不卡| 国产精品成人观看视频国产奇米| 欧美77777| 黄色精品一区二区| 国产综合在线看| 国产欧美日韩不卡| 国产精品一区二区男女羞羞无遮挡| 午夜免费在线观看精品视频| 一区二区三区国产精华| 99国产精品国产精品毛片| 亚洲午夜视频在线观看| 韩国精品在线观看| 在线精品视频一区二区| 国外视频精品毛片| 亚洲福利国产| 亚洲靠逼com| 亚洲一二三区精品| 欧美在线网址| 麻豆9191精品国产| 亚洲人成在线播放| 一本色道久久综合亚洲精品高清| 欧美国产亚洲另类动漫| 亚洲日本va午夜在线影院| 亚洲精品中文字幕女同| 亚洲天堂偷拍| 久久免费视频在线| 欧美日韩高清一区| 国产网站欧美日韩免费精品在线观看 | 久久精品视频网| 久久影院午夜论| 欧美高清视频一区| 国产精品热久久久久夜色精品三区| 国产精品日韩欧美综合| 亚洲高清不卡av| 亚洲一本大道在线| 麻豆国产精品777777在线| 欧美激情一区二区三区全黄| 亚洲精品一区二区三区在线观看| 亚洲视屏一区| 欧美成人资源| 国产日韩欧美综合| 亚洲精品国产精品国自产观看| 亚洲欧美激情精品一区二区| 久久这里有精品15一区二区三区 | 亚洲激情一区二区三区| 亚洲欧美成人网| 亚洲第一色在线| 亚洲欧美日韩精品久久亚洲区| 久久一区国产| 国产精品爽黄69| 一区二区三区黄色| 欧美.www| 欧美一区二区三区在| 一区二区日韩伦理片| 久久久www成人免费毛片麻豆| 欧美日韩在线观看视频| 亚洲黄色影院| 久久久久久久久久久一区| 欧美.com| 亚洲性视频h| 蜜桃av久久久亚洲精品| 91久久久亚洲精品| 亚洲午夜精品网| 老司机免费视频一区二区| 欧美日本在线| 国产亚洲一本大道中文在线| 中文一区二区| 亚洲蜜桃精久久久久久久| 久久综合婷婷| 在线视频观看日韩| 女仆av观看一区| 久久久久久穴| 在线观看视频一区二区| 美国十次成人| 蜜桃av综合| 亚洲精品麻豆| 亚洲人成人一区二区三区| 欧美电影打屁股sp| 99re亚洲国产精品| 亚洲精品资源美女情侣酒店| 欧美日本国产| 亚洲激情二区| 男女av一区三区二区色多| 久久精品盗摄| 在线播放豆国产99亚洲| 久久综合网络一区二区| 久久久天天操| 亚洲破处大片| 亚洲毛片视频| 国产精品亚洲综合| 欧美日韩一区二区在线视频 | 亚洲一区二区精品在线观看| 日韩午夜中文字幕| 欧美视频在线观看免费| 亚洲午夜精品久久久久久app| 亚洲最新在线| 国产日韩一区在线| 久久亚洲春色中文字幕| 久久天天躁狠狠躁夜夜av| 亚洲黄色影片| 在线综合亚洲欧美在线视频| 国产一区二区日韩精品欧美精品 | 你懂的国产精品永久在线| 欧美不卡视频一区| 亚洲自拍偷拍视频| 久久精品国产视频| 99这里只有久久精品视频| 欧美国产免费| 免费的成人av| 亚洲免费一级电影| 久久久精品999| 亚洲一区二区日本| 美日韩丰满少妇在线观看| 欧美精品成人| 欧美综合二区| 欧美激情a∨在线视频播放| 亚洲一区二区在线免费观看视频| 久久福利影视| 亚洲一区二区三区乱码aⅴ蜜桃女| 欧美一区中文字幕| 一区二区高清视频| 久久免费精品视频| 午夜久久电影网| 免费一区二区三区| 欧美在线一二三| 欧美激情精品久久久久久黑人| 欧美一区二区三区视频免费播放| 美女黄色成人网| 一区二区三区日韩精品| 久久精品91久久香蕉加勒比 | 一区二区欧美国产| 国产精品永久免费| 久久裸体视频| 欧美午夜一区二区福利视频| 欧美高清在线| 国产一区观看| 亚洲男人第一网站| 亚洲一级黄色片| 欧美精品成人一区二区在线观看| 久久免费国产| 国产亚洲精品激情久久| 在线视频一区二区| 99精品福利视频| 欧美高清不卡| 亚洲第一区色| 亚洲精品乱码久久久久久按摩观| 久久久久国产精品人| 久久人体大胆视频| 国内精品久久久久影院薰衣草 | 91久久中文字幕| 黄色工厂这里只有精品| 午夜免费久久久久| 欧美在线日韩精品| 国产喷白浆一区二区三区| 亚洲视频1区2区| 亚洲激情视频网| 午夜精彩国产免费不卡不顿大片| 依依成人综合视频| 亚洲欧美一区二区视频| 亚洲最黄网站| 免费在线观看精品| 最近中文字幕日韩精品| 亚洲麻豆视频| 欧美亚一区二区| 午夜久久福利| 另类欧美日韩国产在线| 精品9999| 欧美成人国产| 亚洲美女色禁图| 亚洲欧美日韩国产| 国产欧美日韩一区二区三区在线 | 欧美激情 亚洲a∨综合| 西西裸体人体做爰大胆久久久| 亚洲嫩草精品久久| 国产一区二区三区四区老人| 亚洲深夜福利网站| 一区二区日本视频| 欧美在线三区| 欧美激情中文字幕乱码免费| 亚洲人体偷拍| 国产精品久久久久高潮| 欧美一区三区三区高中清蜜桃| 久久久久这里只有精品| 亚洲第一二三四五区| 欧美日本韩国一区二区三区| 亚洲天堂黄色| 欧美凹凸一区二区三区视频| 亚洲免费久久| 国产视频一区二区在线观看| 免费在线亚洲| 久久丁香综合五月国产三级网站| 亚洲国产高清在线| 亚洲精品在线看| 国产亚洲福利社区一区|