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

Netty到底是個啥?你明白了嗎?

開發(fā) 架構(gòu)
Netty 是一個利用Java的高級網(wǎng)絡能力,隱藏其(Java API)背后的復雜性而提供一個易于使用的 NIO 客戶端/服務端框架。

Netty 是一個利用Java的高級網(wǎng)絡能力,隱藏其(Java API)背后的復雜性而提供一個易于使用的 NIO 客戶端/服務端框架。

它極大地簡化并優(yōu)化了 TCP 和 UDP 套接字服務器等網(wǎng)絡編程,并且性能以及安全性等很多方面甚至都要更好。

支持多種協(xié)議 如 FTP,SMTP,HTTP 以及各種二進制和基于文本的傳統(tǒng)協(xié)議。

用官方的總結(jié)就是:Netty 成功地找到了一種在不妥協(xié)可維護性和性能的情況下實現(xiàn)易于開發(fā),性能,穩(wěn)定性和靈活性的方法。

為什么要用Netty

Netty作為一款優(yōu)秀的網(wǎng)絡框架,自然有令人折服的特點:

設計:針對多種傳輸類型的同一接口。簡單但更強大的線程模型。真正的無連接的數(shù)據(jù)報套接字支持。鏈接邏輯復用。

性能:Netty的高性能是它被廣泛使用的一個重要的原因,我們可能都認為Java不太適合 編寫游戲服務端程序,但Netty的到來無疑是降低了懷疑的聲音。

較原生Java API有更好的吞吐量,較低的延時。資源消耗更少(共享池和重用)。減少內(nèi)存拷貝。

健壯性:原生NIO的客戶端/服務端程序編寫較為麻煩,如果某個地方處理的不好,可能會 導致一些意料之外的異常,如內(nèi)存溢出,死循環(huán)等等,而Netty則為我們簡化了原生API 的使用,這使得我們編寫出來的程序不那么容易出錯。

社區(qū):Netty快速發(fā)展的一個重要的原因就是它的社區(qū)非常活躍,這也使得采用它的開發(fā)者越來越多。

Netty的簡單使用

左邊是服務端代碼,右邊是客戶端代碼。

上面的代碼基本就是模板代碼,每次使用都是這一個套路,唯一需要我們開發(fā)的部分是 handler(…) 和 childHandler(…) 方法中指定的各個 handler,如 EchoServerHandler 和 EchoClientHandler,當然 Netty 源碼也給我們提供了很多的 handler,比如上面的 LoggingHandler,它就是 Netty 源碼中為我們提供的,需要的時候直接拿過來用就好了。

我們先來看一下上述代碼中涉及到的一些內(nèi)容:

ServerBootstrap 類用于創(chuàng)建服務端實例,Bootstrap 用于創(chuàng)建客戶端實例。

兩個 EventLoopGroup:bossGroup 和 workerGroup,它們涉及的是 Netty 的線程模型,可以看到服務端有兩個 group,而客戶端只有一個,它們就是 Netty 中的線程池。

Netty 中的 Channel,沒有直接使用 Java 原生的 ServerSocketChannel 和 SocketChannel,而是包裝了 NioServerSocketChannel 和 NioSocketChannel 與之對應。

當然,也有對其他協(xié)議的支持,如支持 UDP 協(xié)議的 NioDatagramChannel,本文只關(guān)心 TCP 相關(guān)的。

左邊 handler(…) 方法指定了一個 handler(LoggingHandler),這個 handler 是給服務端收到新的請求的時候處理用的。右邊 handler(...) 方法指定了客戶端處理請求過程中需要使用的 handlers。

如果你想在 EchoServer 中也指定多個 handler,也可以像右邊的 EchoClient 一樣使用 ChannelInitializer

左邊 childHandler(…) 指定了 childHandler,這邊的 handlers 是給新創(chuàng)建的連接用的,我們知道服務端 ServerSocketChannel 在 accept 一個連接以后,需要創(chuàng)建 SocketChannel 的實例,childHandler(…) 中設置的 handler 就是用于處理新創(chuàng)建的 SocketChannel 的,而不是用來處理 ServerSocketChannel 實例的。

pipeline:handler 可以指定多個(需要上面的 ChannelInitializer 類輔助),它們會組成了一個 pipeline,它們其實就類似攔截器的概念,現(xiàn)在只要記住一點,每個 NioSocketChannel 或 NioServerSocketChannel 實例內(nèi)部都會有一個 pipeline 實例。pipeline 中還涉及到 handler 的執(zhí)行順序。

ChannelFuture:這個涉及到 Netty 中的異步編程,和 JDK 中的 Future 接口類似。

Netty核心組件

Bytebuf(字節(jié)容器)

網(wǎng)絡通信最終都是通過字節(jié)流進行傳輸?shù)摹yteBuf 就是 Netty 提供的一個字節(jié)容器,其內(nèi)部是一個字節(jié)數(shù)組。當我們通過 Netty 傳輸數(shù)據(jù)的時候,就是通過 ByteBuf 進行的。

我們可以將 ByteBuf 看作是 Netty 對 Java NIO 提供了 ByteBuffer 字節(jié)容器的封裝和抽象。

有很多小伙伴可能就要問了 :為什么不直接使用 Java NIO 提供的 ByteBuffer 呢?

因為 ByteBuffer 這個類使用起來過于復雜和繁瑣。

Bootstrap 和 ServerBootstrap(啟動引導類)

Bootstrap 是客戶端的啟動引導類/輔助類,具體使用方法如下:

EventLoopGroup group = new NioEventLoopGroup();
try {
//創(chuàng)建客戶端啟動引導/輔助類:Bootstrap
Bootstrap b = new Bootstrap();
//指定線程模型
b.group(group).
......
// 嘗試建立連接
ChannelFuture f = b.connect(host, port).sync();
f.channel().closeFuture().sync();
} finally {
// 優(yōu)雅關(guān)閉相關(guān)線程組資源
group.shutdownGracefully();
}

ServerBootstrap 客戶端的啟動引導類/輔助類,具體使用方法如下:

 // 1.bossGroup 用于接收連接,workerGroup 用于具體的處理
EventLoopGroup bossGroup = new NioEventLoopGroup(1);
EventLoopGroup workerGroup = new NioEventLoopGroup();
try {
//2.創(chuàng)建服務端啟動引導/輔助類:ServerBootstrap
ServerBootstrap b = new ServerBootstrap();
//3.給引導類配置兩大線程組,確定了線程模型
b.group(bossGroup, workerGroup).
......
// 6.綁定端口
ChannelFuture f = b.bind(port).sync();
// 等待連接關(guān)閉
f.channel().closeFuture().sync();
} finally {
//7.優(yōu)雅關(guān)閉相關(guān)線程組資源
bossGroup.shutdownGracefully();
workerGroup.shutdownGracefully();
}
}

從上面的示例中,我們可以看出:

Bootstrap 通常使用 connet() 方法連接到遠程的主機和端口,作為一個 Netty TCP 協(xié)議通信中的客戶端。另外,Bootstrap 也可以通過 bind() 方法綁定本地的一個端口,作為 UDP 協(xié)議通信中的一端。

ServerBootstrap通常使用 bind() 方法綁定本地的端口上,然后等待客戶端的連接。

Bootstrap 只需要配置一個線程組— EventLoopGroup ,而 ServerBootstrap需要配置兩個線程組— EventLoopGroup ,一個用于接收連接,一個用于具體的 IO 處理。

Channel(網(wǎng)絡操作抽象類)

Channel 接口是 Netty 對網(wǎng)絡操作抽象類。通過 Channel 我們可以進行 I/O 操作。

一旦客戶端成功連接服務端,就會新建一個 Channel 同該用戶端進行綁定,示例代碼如下:

//  通過 Bootstrap 的 connect 方法連接到服務端
public Channel doConnect(InetSocketAddress inetSocketAddress) {
CompletableFuture<Channel> completableFuture = new CompletableFuture<>();
bootstrap.connect(inetSocketAddress).addListener((ChannelFutureListener) future -> {
if (future.isSuccess()) {
completableFuture.complete(future.channel());
} else {
throw new IllegalStateException();
}
});
return completableFuture.get();
}

比較常用的Channel接口實現(xiàn)類是 :

NioServerSocketChannel(服務端)

NioSocketChannel(客戶端)

這兩個 Channel 可以和 BIO 編程模型中的ServerSocket以及Socket兩個概念對應上。

EventLoop(事件循環(huán))

EventLoop 介紹

這么說吧!EventLoop(事件循環(huán))接口可以說是 Netty 中最核心的概念了!

《Netty 實戰(zhàn)》這本書是這樣介紹它的:

EventLoop 定義了 Netty 的核心抽象,用于處理連接的生命周期中所發(fā)生的事件。

是不是很難理解?說實話,我學習 Netty 的時候看到這句話是沒太能理解的。

說白了,EventLoop 的主要作用實際就是責監(jiān)聽網(wǎng)絡事件并調(diào)用事件處理器進行相關(guān) I/O 操作(讀寫)的處理。

Channel 和 EventLoop 的關(guān)系

那 Channel 和 EventLoop 直接有啥聯(lián)系呢?

Channel 為 Netty 網(wǎng)絡操作(讀寫等操作)抽象類,EventLoop 負責處理注冊到其上的Channel 的 I/O 操作,兩者配合進行 I/O 操作。

EventloopGroup 和 EventLoop 的關(guān)系

EventLoopGroup 包含多個 EventLoop(每一個 EventLoop 通常內(nèi)部包含一個線程),它管理著所有的 EventLoop 的生命周期。

并且,EventLoop 處理的 I/O 事件都將在它專有的 Thread 上被處理,即 Thread 和 EventLoop 屬于 1 : 1 的關(guān)系,從而保證線程安全。

下圖是 Netty NIO 模型對應的 EventLoop 模型。通過這個圖應該可以將EventloopGroup、EventLoop、 Channel三者聯(lián)系起來。

ChannelHandler(消息處理器) 和 ChannelPipeline(ChannelHandler 對象鏈表)

下面這段代碼使用過 Netty 的小伙伴應該不會陌生,我們指定了序列化編解碼器以及自定義的 ChannelHandler 處理消息。

b.group(eventLoopGroup)
.handler(new ChannelInitializer<SocketChannel>() {
@Override
protected void initChannel(SocketChannel ch) {
ch.pipeline().addLast(new NettyKryoDecoder(kryoSerializer, RpcResponse.class));
ch.pipeline().addLast(new NettyKryoEncoder(kryoSerializer, RpcRequest.class));
ch.pipeline().addLast(new KryoClientHandler());
}
});

ChannelHandler 是消息的具體處理器,主要負責處理客戶端/服務端接收和發(fā)送的數(shù)據(jù)。

當 Channel 被創(chuàng)建時,它會被自動地分配到它專屬的 ChannelPipeline。一個Channel包含一個 ChannelPipeline。ChannelPipeline 為 ChannelHandler 的鏈,一個 pipeline 上可以有多個 ChannelHandler。

我們可以在 ChannelPipeline 上通過 addLast() 方法添加一個或者多個ChannelHandler (一個數(shù)據(jù)或者事件可能會被多個 Handler 處理) 。當一個 ChannelHandler 處理完之后就將數(shù)據(jù)交給下一個 ChannelHandler 。

當 ChannelHandler 被添加到的 ChannelPipeline 它得到一個 ChannelHandlerContext,它代表一個 ChannelHandler 和 ChannelPipeline 之間的“綁定”。ChannelPipeline 通過 ChannelHandlerContext來間接管理 ChannelHandler 。

ChannelFuture(操作執(zhí)行結(jié)果)

public interface ChannelFuture extends Future<Void> {
Channel channel();

ChannelFuture addListener(GenericFutureListener<? extends Future<? super Void>> var1);
......

ChannelFuture sync() throws InterruptedException;
}

Netty 是異步非阻塞的,所有的 I/O 操作都為異步的。

Netty實際上是不支持異步io的,真正的異步io需要底層操作系統(tǒng)的支持,異步是說數(shù)據(jù)準備好之后由系統(tǒng)通知應用程序你可以來操作數(shù)據(jù)了,而netty所謂的異步是另起一個用戶線程等待數(shù)據(jù)就緒并通過回調(diào)處理,并不是真正意義上的異步io

因此,我們不能立刻得到操作是否執(zhí)行成功,但是,你可以通過 ChannelFuture 接口的 addListener() 方法注冊一個 ChannelFutureListener,當操作執(zhí)行成功或者失敗時,監(jiān)聽就會自動觸發(fā)返回結(jié)果。

ChannelFuture f = b.connect(host, port).addListener(future -> {
if (future.isSuccess()) {
System.out.println("連接成功!");
} else {
System.err.println("連接失敗!");
}
}).sync();

并且,你還可以通過ChannelFuture 的 channel() 方法獲取連接相關(guān)聯(lián)的Channel 。

Channel channel = f.channel();

另外,我們還可以通過 ChannelFuture 接口的 sync()方法讓異步的操作編程同步的。

//bind()是異步的,但是,你可以通過 `sync()`方法將其變?yōu)橥健?br>ChannelFuture f = b.bind(port).sync();

本文參考:https://www.javadoop.com/post/netty-part-1

本文參考:https://github.com/Snailclimb/netty-practical-tutorial

責任編輯:武曉燕 來源: 左耳君
相關(guān)推薦

2024-08-01 17:34:56

Promiseaxios請求

2025-10-31 00:00:02

硅光光通信英偉達

2024-02-07 12:35:00

React并發(fā)模式concurrent

2025-10-29 07:33:13

2025-03-10 11:48:10

人工智能AI軟件

2016-03-03 17:42:10

DockerDCOS

2022-04-10 19:26:07

TypeScript類型語法

2021-05-11 07:30:58

JNIJavaAPI

2021-01-28 17:41:32

Github網(wǎng)站Pull Reques

2024-08-26 14:23:56

2021-12-16 15:11:59

Facebook天秤幣加密貨幣

2021-12-26 00:01:51

Log4Shell漏洞服務器

2022-09-06 21:38:45

數(shù)字人數(shù)字孿生

2024-07-12 15:08:23

Python@wraps函數(shù)

2022-06-01 07:58:31

渲染3D

2022-12-30 08:35:00

2013-05-29 10:17:56

Hadoop分布式文件系統(tǒng)

2012-07-25 09:09:46

GNOME OS桌面

2021-11-07 14:34:26

跨域網(wǎng)絡后端

2020-03-07 09:47:48

AVL樹算法場景
點贊
收藏

51CTO技術(shù)棧公眾號

91精品久久久久久| 久久久精品久久| 人人爽人人av| 麻豆传媒免费在线观看| 国产成人在线影院| 国内精品模特av私拍在线观看| 精品一区二区视频在线观看| 欧美二三四区| 亚洲人123区| 蜜桃视频在线观看成人| 夜夜爽8888| 99在线精品视频在线观看| 一区二区亚洲精品国产| 亚洲精品乱码久久久久久9色| 色综合桃花网| 亚洲欧洲99久久| 欧美lavv| 国内老熟妇对白hdxxxx| 日韩激情视频在线观看| 欧美国产日本高清在线| 美国美女黄色片| 1204国产成人精品视频| 欧美视频在线观看一区| 亚洲人成无码网站久久99热国产| 香蕉视频在线看| 波多野结衣视频一区| 91精品久久久久久久久久入口| 日韩久久精品视频| 亚洲老妇激情| 上原亚衣av一区二区三区| 中国黄色a级片| 涩涩屋成人免费视频软件| 欧美视频一区二区三区在线观看| 美女日批免费视频| 羞羞视频在线观看不卡| 国产精品久久久久永久免费观看| 久久国产精品 国产精品| 国产av精国产传媒| 精品一区二区免费在线观看| 国产精品欧美在线| 日本熟女毛茸茸| 99精品欧美| 久久久久久久久久久免费精品| 日本精品在线免费观看| 国产欧美日韩在线一区二区| 亚洲福利视频久久| 国产免费一区二区三区最新6| 亚州欧美在线| 欧美高清激情brazzers| 亚洲一区在线不卡| 久久夜夜操妹子| 欧美午夜片在线免费观看| 无码熟妇人妻av在线电影| 26uuu亚洲电影在线观看| 亚洲女同一区二区| 99精品一级欧美片免费播放| 免费a级在线播放| 中文字幕一区二区三区视频| 天堂av一区二区| 懂色av中文在线| 国产精品久久久久久久岛一牛影视| 日本一区高清在线视频| 经典三级在线| 亚洲国产激情av| 亚洲欧洲精品一区二区| av在线电影免费观看| 国产精品天美传媒| 亚洲综合激情五月| 18视频在线观看| 亚洲一二三区在线观看| 无码专区aaaaaa免费视频| 69av成人| 色婷婷综合激情| 亚洲免费看av| 成人在线视频区| 精品美女一区二区| 玖草视频在线观看| 自拍亚洲一区| 爽爽爽爽爽爽爽成人免费观看| 国产男女猛烈无遮挡在线喷水| 亚洲精品小说| 久久久久久久久久久免费精品| 国产在线观看黄色| 麻豆精品视频在线| 超碰97国产在线| 深夜福利在线视频| 欧美激情中文字幕| 91看片淫黄大片91| 欧美gv在线观看| 欧美色综合天天久久综合精品| 超碰在线资源站| 国产精品调教视频| 中国人与牲禽动交精品| 欧美日韩在线观看成人| 国产亚洲精品bv在线观看| 国产精品高潮粉嫩av| 99久久久国产精品无码免费| 白白色 亚洲乱淫| 日韩欧美一区二区在线观看 | 精品99999| 欧美高清性xxxx| 久久一区二区三区电影| 欧美精品国产精品日韩精品| 草莓视频18免费观看| 国产毛片精品国产一区二区三区| 久久av一区二区三区亚洲| 老司机免费在线视频| 精品久久久久久久久中文字幕 | 福利所第一导航| 美女诱惑黄网站一区| 99se婷婷在线视频观看| p色视频免费在线观看| 亚洲国产精品尤物yw在线观看| 九九热免费精品视频| 99国产精品免费网站| 中文字幕v亚洲ⅴv天堂| 精品在线免费观看视频| 久久精品国产秦先生| 久草一区二区| 免费在线看污片| 欧美剧在线免费观看网站| 丰满少妇在线观看资源站| 国产精品mm| 成人国产精品一区二区| 搞黄视频免费在线观看| 欧美日韩国产色| 涩视频在线观看| 亚洲精品一区二区在线看| 国产精品久久久久久久久久尿| 日韩中文字幕观看| 亚洲综合一区二区精品导航| 91pony九色| 色婷婷热久久| 国产成人精品在线| 男人av在线| 黄色一区二区在线| 色悠悠在线视频| 自拍视频亚洲| 91嫩草在线| 91在线中文| 欧美一区三区二区| 永久免费看片直接| 激情综合色综合久久| 小说区图片区图片区另类灬| 日本成人片在线| 亚洲色图第三页| 无码人妻黑人中文字幕| 久久久蜜臀国产一区二区| 日韩在线视频在线观看| 欧美影院天天5g天天爽| 97在线视频免费| 天天插天天干天天操| 午夜精品福利一区二区蜜股av | 久久艹在线视频| 国产又黄又爽视频| 亚洲天堂久久久久久久| 三级黄色片免费看| 欧美精品首页| 国产精品国产一区二区| 蜜桃视频www网站在线观看| 亚洲国产欧美自拍| 国产区一区二区三| 中文字幕欧美国产| 色婷婷激情视频| 欧美日韩国产一区精品一区| 国产传媒一区| 日本乱码一区二区三区不卡| 亚洲欧洲免费视频| 亚洲熟妇无码久久精品| 亚洲精品日韩一| 伊人网综合视频| 日韩电影在线观看一区| 一卡二卡3卡四卡高清精品视频| 99久久99九九99九九九| 久久久噜噜噜久噜久久| 撸视在线观看免费视频| 欧美午夜精品久久久| 唐朝av高清盛宴| 91麻豆精品在线观看| 一区二区在线播放视频| 一区二区影院| 好看的日韩精品视频在线| 波多野结衣亚洲一二三| 日韩一区二区福利| 午夜精品无码一区二区三区 | 精品国产www| 亚洲激情五月婷婷| 亚洲第一成人网站| 久久精品国产99| 99久久国产综合精品五月天喷水| 竹菊久久久久久久| 亚洲综合中文字幕在线| 日韩脚交footjobhd| 最近2019年日本中文免费字幕| 国产高清免费观看| 色综合中文综合网| 成人观看免费视频| 日本一区免费视频| 蜜臀av粉嫩av懂色av| 免费黄网站欧美| 国产亚洲黄色片| 欧美高清视频手机在在线| 国产欧美欧洲| 粉嫩一区二区三区在线观看| 欧美做爰性生交视频| 成人无遮挡免费网站视频在线观看| 亚洲国产精品系列| 国产精品人人妻人人爽| 日韩欧美成人区| 黄色一级视频免费| 国产精品麻豆一区二区| 一本色道综合久久欧美日韩精品| 久久国产精品无码网站| 草草久久久无码国产专区| 一区二区三区中文| 亚洲激情一区二区| 色婷婷综合久久久久久| 成人影片在线播放| 日日夜夜亚洲| 国产精品老女人视频| 天堂中文av在线资源库| 欧美极度另类性三渗透| 欧美猛烈性xbxbxbxb| 亚洲丝袜一区在线| 婷婷丁香一区二区三区| 精品黑人一区二区三区久久| 一区不卡在线观看| 欧美性xxxxx极品少妇| 麻豆成人免费视频| 日韩欧美国产激情| 日本天堂在线视频| 亚洲国产视频直播| 福利所第一导航| 亚洲女爱视频在线| www日韩在线| 国产精品成人在线观看| 精品无码人妻一区二区免费蜜桃 | 91精品人妻一区二区| 成人精品免费看| 日本美女视频网站| 成人ar影院免费观看视频| wwwww在线观看| 国产精品2024| 韩国三级与黑人| 国产成人福利片| 伊人av在线播放| 高清不卡一区二区| 亚洲无人区码一码二码三码| 国产suv精品一区二区6| 韩国三级hd中文字幕有哪些| 国模少妇一区二区三区| 免费人成视频在线播放| 国产精品夜夜嗨| 爱情岛论坛亚洲自拍| 成人一二三区视频| 成人在线视频免费播放| 91亚洲大成网污www| 中文字幕av网址| 欧美—级在线免费片| 超碰人人人人人人人| 最新国产の精品合集bt伙计| 男女性高潮免费网站| 一区二区日韩av| 国产一级一片免费播放| 五月婷婷激情综合网| 欧美日韩一二三四区| 欧美视频日韩视频| 国产色综合视频| 精品国精品国产| 人操人视频在线观看| 在线国产精品播放| 宅男网站在线免费观看| 性欧美办公室18xxxxhd| 色尼玛亚洲综合影院| 成人妇女免费播放久久久| 亚洲精品黑牛一区二区三区| 精品久久久三级| 欧美在线观看视频一区| 2021国产视频| 国产欧美激情| gogogo高清免费观看在线视频| 国产91高潮流白浆在线麻豆| 99久久人妻精品免费二区| 日本一区二区三区四区| 久久久久久蜜桃| 日韩欧美第一页| 国产99视频在线| 国产视频久久久久| 国内精品久久久久久野外| 午夜精品一区二区三区在线| 国产成人亚洲一区二区三区| 成人自拍网站| 清纯唯美亚洲综合一区| 欧美图片激情小说| 秋霞电影一区二区| 国产在线不卡av| 国产精品美女久久久久aⅴ | 亚洲美女一区| 久热精品在线播放| 97精品电影院| 1024手机在线视频| 欧美性受xxxx黑人xyx| 欧美视频一二区| 日韩最新免费不卡| 国模精品视频| 国产女人18毛片水18精品| 欧美色图婷婷| 日韩久久久久久久久久久久| 三级一区在线视频先锋| 稀缺小u女呦精品呦| 国产精品久久久久四虎| www.国产一区二区| 日韩精品一区二区三区三区免费| 97电影在线看视频| 欧美一区二区三区免费观看| 亚洲3区在线| 一区二区三区四区视频在线观看| 国产精品普通话对白| 性折磨bdsm欧美激情另类| 国产精品丝袜91| 在线观看污污网站| 亚洲黄色免费三级| 欧美人与动牲性行为| 成人在线观看视频网站| 日韩在线观看| 欧美精品一区免费| 成人va在线观看| 黑人巨大精品一区二区在线| 精品视频一区二区不卡| 国产污视频在线| 欧美又大粗又爽又黄大片视频| 超碰成人在线免费| a天堂资源在线观看| 国产精品18久久久久久vr| 91精品国产闺蜜国产在线闺蜜| 欧美片网站yy| av男人的天堂在线| 国产精品欧美激情| 日韩不卡一区| 中文字幕第17页| 国产精品久久久久9999吃药| 中文字幕乱伦视频| 中文字幕亚洲一区| 高清欧美日韩| 亚洲一区二区高清视频| 麻豆久久久久久| 99久久久无码国产精品不卡| 欧美日韩一区二区电影| yourporn在线观看视频| 国产精品精品一区二区三区午夜版| 国产一区二区三区网| 人人爽人人av| 国产精品久久99| 国产男男gay体育生网站| 久久精品这里热有精品| 久久影院一区二区三区| 嫩草影院中文字幕| av激情综合网| 精品不卡一区二区| 国产亚洲精品久久久久久牛牛| 韩国三级一区| 一区二区三区四区五区视频| 紧缚捆绑精品一区二区| 美女的奶胸大爽爽大片| 亚洲成人动漫在线播放| 丝袜老师在线| 视频一区二区精品| 国产综合色在线视频区| 青娱乐在线视频免费观看| 亚洲国产成人久久综合| 成人美女大片| 伊人久久大香线蕉av一区| 国产精品99久久不卡二区| 国产污污视频在线观看| 亚洲色图五月天| 激情久久免费视频| 国产原创中文在线观看 | 123区在线| 欧美在线激情| 激情都市一区二区| 国产网址在线观看| 亚洲欧美在线免费| www.久久草.com| 鲁一鲁一鲁一鲁一澡| 日本一区二区动态图| 亚洲AV无码一区二区三区性 | 国产亚洲在线播放| 日本一区二区三区视频在线看 | 99成人在线观看| 亚洲电影免费观看高清完整版在线| 亚洲国产欧美日本视频| 亚洲在线色站| 成人美女在线视频| 伊人免费在线观看高清版| 欧美日本国产在线| 精品国产一区二区三区av片| 91精产国品一二三| 欧美羞羞免费网站| 97在线超碰| 中文字幕超清在线免费观看|