精品欧美一区二区三区在线观看 _久久久久国色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ù)棧公眾號

免费在线成人| 欧美三级一区| 国产精品嫩草99a| 亚洲永久在线观看| 亚洲高清毛片一区二区| 成人在线丰满少妇av| 欧美一区二区在线免费观看| 国产深夜男女无套内射| 成人午夜在线观看视频| 国产精品一区二区黑丝| 日本人成精品视频在线| 成年人av电影| 久久97视频| 日韩精品最新网址| 一区二区成人网| a级片免费在线观看| 国产精品视频观看| 狠狠色狠狠色综合人人| 国产美女主播在线观看| 亚洲免费网站| 久久久久久成人精品| 蜜桃传媒一区二区亚洲| youjizz亚洲| 欧美日韩在线电影| 免费看又黄又无码的网站| 麻豆影院在线| 国产亚洲欧美激情| 国产日产精品一区二区三区四区 | 在线免费黄色| 成人av网址在线观看| 91精品国产自产在线老师啪| 国产农村妇女aaaaa视频| 欧美在线1区| 日韩中文娱乐网| 一级性生活毛片| 红杏成人性视频免费看| 日韩丝袜美女视频| 在线观看国产中文字幕| 欧美va在线观看| 欧美日韩亚洲一区二区| 欧美一级免费播放| 日本资源在线| 亚洲精品国产高清久久伦理二区| 日本在线播放一区| 欧美日韩激情视频一区二区三区| 成人aa视频在线观看| y111111国产精品久久婷婷| 艳妇乳肉豪妇荡乳av| 免费成人在线影院| 国产精品r级在线| 国产又黄又爽又色| 中文精品视频| 91精品国产高清久久久久久| 国产无遮挡aaa片爽爽| 中文字幕av亚洲精品一部二部| 自拍偷拍亚洲欧美| 美女av免费看| 99视频精品全部免费在线视频| 中文字幕视频一区二区在线有码| 国产人妻大战黑人20p| 国产在线日韩精品| 在线看欧美日韩| 国精产品一区一区| 日韩伦理一区| 欧美成人tv| 国产凹凸在线观看一区二区| 亚洲va久久久噜噜噜| 国产又大又粗又硬| 国产一区中文字幕| 鬼打鬼之黄金道士1992林正英| www.热久久| av一本久道久久综合久久鬼色| 国产精品中出一区二区三区| 亚洲区小说区图片区| 久久品道一品道久久精品| 日本高清不卡一区二区三| eeuss影院在线播放| 国产精品电影一区二区| 男人天堂成人网| av老司机在线观看| 一本一本大道香蕉久在线精品| 99视频免费播放| 日韩护士脚交太爽了| 日韩欧美国产成人一区二区| 亚洲一区二区在线免费| 国产探花在线精品一区二区| 久久亚洲综合国产精品99麻豆精品福利 | 中文字幕在线播| 理论片日本一区| 超碰97在线资源| 欧美美女搞黄| 亚洲欧洲另类国产综合| 欧美一级视频免费看| 第四色男人最爱上成人网| 欧美丰满嫩嫩电影| 国产黑丝一区二区| 99久久夜色精品国产亚洲狼 | 正在播放一区| 91在线三级| 欧美日韩亚洲综合一区二区三区| 国内av免费观看| 制服丝袜日韩| 欧美乱妇40p| 成人h动漫精品一区二区下载| 极品尤物av久久免费看| 精品免费一区二区三区蜜桃| 色三级在线观看| 精品女厕一区二区三区| 污污视频在线免费| 伊人久久大香线蕉综合网站| 久久在线免费视频| 无码人妻久久一区二区三区| 国产盗摄一区二区三区| 日韩理论片在线观看| h片精品在线观看| 欧美日韩国产综合久久| 国产三级国产精品| 午夜久久99| 国产精品中文久久久久久久| 香蕉视频成人在线| 亚洲黄色在线视频| 中文字幕成人在线视频| 亚洲伊人春色| 97精品欧美一区二区三区| 国产三级按摩推拿按摩| 亚洲国产精品精华液2区45| 欧美一级欧美一级| 国产一区二区| www.xxxx欧美| 波多野结衣家庭主妇| 99久久99久久精品免费观看| 五月天激情图片| 日韩一级视频| 最近2019年日本中文免费字幕| 国产免费av一区| 99热精品国产| 精品无码国模私拍视频| 北条麻妃在线一区二区免费播放 | 亚洲深夜福利视频| 国产一级性生活| 国产精品一级片| 亚洲免费视频播放| 99亚洲男女激情在线观看| 日韩在线视频观看| 中文字幕在线观看1| 欧美韩国日本一区| 五月婷婷狠狠操| 精品久久美女| 国产精品久久久久久一区二区| 日本精品专区| 欧美亚洲高清一区二区三区不卡| 女尊高h男高潮呻吟| 亚洲一区免费| 欧美久久电影| 全球最大av网站久久| 原创国产精品91| 中文字幕一区2区3区| 国产精品久久久久一区二区三区 | 欧美激情图片区| 性少妇videosexfreexxx片| 亚洲综合一区二区| xxxwww国产| 亚洲女同同性videoxma| 欧美一级二级三级九九九| 亚洲成人看片| 色伦专区97中文字幕| 国产免费高清视频| 亚洲综合999| 国产人妻人伦精品1国产丝袜| 免费视频一区| 亚洲精品国产精品国自产观看| 国产一区二区色噜噜| 久久久精品国产| www日本高清视频| 午夜天堂影视香蕉久久| 久久美女免费视频| 韩国精品久久久| 福利在线一区二区| 网红女主播少妇精品视频| 国产精品电影网站| 国产不卡在线| 亚洲精品理论电影| 中国一级片黄色一级片黄| 综合激情成人伊人| 亚洲天堂美女视频| 日韩国产一区二| www国产免费| 天美av一区二区三区久久| 国产精品视频在线观看| 伊人福利在线| 一区二区三区视频免费在线观看| 97超碰人人草| 欧美日韩国产丝袜另类| 一本一本久久a久久| 成人午夜av电影| 日日噜噜噜噜久久久精品毛片| 欧美日韩一区二区国产| 日本成人三级| 国产成人澳门| 国产在线观看精品| 性国裸体高清亚洲| 欧美成人免费va影院高清| 日韩a级作爱片一二三区免费观看| 欧美日韩黄视频| 久久久久久久久影院| 成人欧美一区二区三区白人| 亚洲狠狠婷婷综合久久久久图片| 久久国产生活片100| 欧美日韩黄色一级片| 一区二区三区网站| 免费在线一区二区| 高清精品久久| 国产精品一区二区久久久久| 黑森林国产精品av| 欧美插天视频在线播放| 国产精品视频一区二区久久| 亚洲成人久久一区| 99久久久国产精品无码免费| 在线欧美日韩精品| 欧美三级午夜理伦| 樱桃视频在线观看一区| 欧美福利在线视频| 中文字幕不卡在线播放| 成人免费看aa片| 成人精品视频一区二区三区| 天美一区二区三区| 久久爱www久久做| 成人在线免费播放视频| 激情视频一区| 日韩国产小视频| 亚洲91视频| 一区视频二区视频| 日本电影一区二区| 欧美凹凸一区二区三区视频 | 亚洲视频sss| 国产亚洲电影| 欧美日韩一区综合| 亚洲精品中文字幕99999| 国产欧美一区二区三区另类精品| 中文字幕日韩在线| 99视频免费观看| 天堂精品久久久久| 91九色对白| 精品视频一区二区三区在线观看| 国产欧美精品一区二区三区-老狼 国产欧美精品一区二区三区介绍 国产欧美精品一区二区 | 日韩精品一线二线三线| 亚洲aa在线| 欧美成人综合一区| 九一国产精品| 欧美三级网色| 欧洲三级视频| 亚洲一卡二卡三卡| 久久亚洲在线| 99亚洲精品视频| 欧美91大片| www.成年人视频| 国产视频一区欧美| 日本成年人网址| 日韩一区欧美二区| 91 在线视频观看| 狠狠色丁香婷综合久久| 少妇性l交大片7724com| 国产成人99久久亚洲综合精品| 亚洲黄色小说在线观看| 成人免费高清在线观看| 添女人荫蒂视频| 欧美激情一区二区三区四区| 成年人看的免费视频| 自拍偷在线精品自拍偷无码专区| 小泽玛利亚一区二区免费| 一区二区三区日韩精品| 国产午夜在线播放| 欧洲中文字幕精品| 国产一区二区视频免费观看| 日韩欧美一区电影| 午夜视频免费在线| 国产亚洲视频中文字幕视频| 免费av在线网站| 国内伊人久久久久久网站视频| 乱馆动漫1~6集在线观看| 国产精品激情av电影在线观看| 亚洲青青一区| 国产精品一区二区av| 欧美精品一区二区三区中文字幕| 一区二区三区四区| 韩日成人在线| 大肉大捧一进一出好爽动态图| 久久成人免费电影| 黄色免费视频网站| 国产精品三级视频| 日韩av在线播| 欧美日韩国产123区| 殴美一级特黄aaaaaa| 中文字幕国产精品久久| 丰乳肥臀在线| 国产精品一二三在线| 久久这里只有精品一区二区| 亚洲欧洲精品一区二区| 亚洲美女少妇无套啪啪呻吟| 色啦啦av综合| 337p粉嫩大胆噜噜噜噜噜91av | 91久久中文| 中文字幕在线综合| av电影一区二区| 日本高清一二三区| 日本丶国产丶欧美色综合| 亚洲国产一二三区| 中文字幕精品一区二区精品| 久久av色综合| 国产精品普通话| 日韩电影在线观看完整免费观看| 五月天男人天堂| 久久久久在线| 欧美大喷水吹潮合集在线观看| 国产精品久久久久久亚洲伦| www.国产com| 亚洲第一av在线| 黄色在线免费网站| 国产精品日韩电影| 三级精品视频| av免费观看国产| 国产精品自在在线| 五月天免费网站| 在线精品视频一区二区三四| 无套内谢的新婚少妇国语播放| 欧美精品在线网站| 亚洲三级电影| 亚洲毛片aa| 男女视频一区二区| 青青草福利视频| 精品久久中文字幕久久av| 丁香六月天婷婷| 欧美超级乱淫片喷水| 欧美一级做a| 亚洲欧美丝袜| 久久精品国产秦先生| 少妇av片在线观看| 色就色 综合激情| 五月婷婷六月激情| 国内精品久久影院| 国产无遮挡裸体免费久久| 成年人网站国产| 大尺度一区二区| 国语对白一区二区| 亚洲缚视频在线观看| 成人性生交大片免费看网站| 高清国产在线一区| 亚洲免费激情| 免费在线观看你懂的| 欧美视频在线观看免费网址| 深夜视频在线免费| 国产ts一区二区| 国产精品嫩草影院在线看| 日本xxxxxxx免费视频| 国产视频911| 亚洲无码久久久久| 久热在线中文字幕色999舞| 久久天堂久久| 日韩成人手机在线| 成人高清视频在线| 国产成人一级片| 一级做a爰片久久毛片美女图片| 666av成人影院在线观看| 视频一区视频二区视频| 久久黄色级2电影| 黄视频网站免费看| 欧美精品一区二区三区很污很色的| 免费在线看电影| 免费中文日韩| 精品一区二区三区香蕉蜜桃 | 91久久大香伊蕉在人线| 亚洲天堂成人| 中文字幕一二三四区| 欧美日精品一区视频| 羞羞视频在线免费国产| 久久99久久精品国产| 日韩精品每日更新| www.5588.com毛片| 亚洲黄色有码视频| 99久久综合国产精品二区| 干日本少妇视频| 91视频国产资源| 亚洲视频中文字幕在线观看| 久久99久久99精品中文字幕| 日韩超碰人人爽人人做人人添| 91激情视频在线| 一区二区在线电影| 日本一卡二卡四卡精品| 91精品在线看| 久久九九免费| 免费在线视频观看| 亚洲性视频网址| 亚洲三级av| 五月天激情视频在线观看| 亚洲一区二区三区四区五区黄 | 久久中国妇女中文字幕| 欧美一级色片| 亚洲av毛片在线观看| 日韩欧美中文在线| 日本天码aⅴ片在线电影网站|