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

一篇學會 Java NIO Channel 的使用

開發 后端
要從 channel 中讀取數據(也就是上面這個例子),需要先將數據讀到 ByteBuffer 中;同理,要想向 channel 中寫入數據,也需要先將數據寫入 ByteBuffer(下面講輸出流的時候會講)。

本文轉載自微信公眾號「SH的全棧筆記」,作者SH的全棧筆記。轉載本文請聯系SH的全棧筆記公眾號。

Java NIO 中的 Channel 分類:

  • FileChannel
  • SocketChannel
  • ServerSocketChannel
  • DatagramChannel

channel 分類

FileChannel: 主要用于文件的讀寫,可以從磁盤上讀取文件,也可以向磁盤上寫入文件。

SocketChannel:用于 Socket 的 TCP 連接的數據讀寫,既可以從 Channel 讀數據,也可以向 Channle 中寫入數據

ServerSocketChannel:通過 ServerSocketChannel 可以監聽 TCP 連接,服務端監聽到連接之后,會為每個請求創建一個 SocketChannel

DatagramChannel:用于 UDP 協議的數據讀寫

接下來就分別介紹一下。

FileChannel

主要用于操作文件,廢話不多說,直接看例子。

準備文件 test-file.txt ,內容 shDEQuanZhanBiJi

test-file.txt 文件

輸入 FileInputStream

用于從 FileChannel 中讀取數據,例如將指定文件輸入到 FileChannel 中,我們就能獲取到文件的內容,接下來編寫 FileChannel 的 輸入流 核心代碼:

  1. public static void main(String[] args) throws IOException { 
  2.   // 創建一個輸入流 
  3.   FileInputStream fileInputStream = new FileInputStream("test-file.txt"); 
  4.   // 通過輸入流獲取到 channel 
  5.   FileChannel fileChannel = fileInputStream.getChannel(); 
  6.  
  7.   // 準備好 ByteBuffer 
  8.   ByteBuffer buffer = ByteBuffer.allocate(16); 
  9.   // 將 輸入流 的 channel 的數據讀入 buffer 中 
  10.   fileChannel.read(buffer); 
  11.  
  12.   // 簡單打印 buffer 的內容 
  13.   printBuffer(buffer); // shDEQuanZhanBiJi 

這里面的 ByteBuffer 是 channel 進行讀、寫數據的中間媒介。要從 channel 中讀取數據(也就是上面這個例子),需要先將數據讀到 ByteBuffer 中;同理,要想向 channel 中寫入數據,也需要先將數據寫入 ByteBuffer(下面講輸出流的時候會講)。

對 ByteBuffer 不熟悉的可以先看看我之前寫的《玩轉 ByteBuffer》,printBuffer 的代碼里面也有

輸出 FileOutputStream

顧名思義,是 FileChannel 要向外輸出數據,例如將數據寫入到磁盤文件上,接下來通過例子看看效果:

  1. public static void main(String[] args) throws IOException { 
  2.   // 指定需要生成的文件名稱 
  3.   String generateFileName = "generate-file.txt"
  4.   // 創建一個輸出流 
  5.   FileOutputStream fileOutputStream = new FileOutputStream(generateFileName); 
  6.   // 通過輸出流獲取到 channel 
  7.   FileChannel fileChannel = fileOutputStream.getChannel(); 
  8.  
  9.   // 準備好 ByteBuffer, 并向里面寫入數據 
  10.   ByteBuffer buffer = ByteBuffer.allocate(16); 
  11.   buffer.put("shDEQuanZhanBiJi".getBytes(StandardCharsets.UTF_8)); 
  12.  
  13.   // 將 輸入流 的 channel 的數據讀入 buffer 中 
  14.   fileChannel.write(buffer); 
  15.   fileChannel.close(); 

相應的注釋都已經貼在對應的代碼上了,細節在此不再贅述。唯一需要關注的是,調用 write 寫文件到磁盤上時,也是先傳入的 ByteBuffer。

好了,當你運行完代碼你會發現,雖然文件是生成的了,但是里面卻是空白的...這其實就涉及到對 ByteBuffer 的熟悉程度了,算是埋的一個坑。

如果不知道為啥文件是空的,可以去看看上面講 ByteBuffer 的文章,接下來是解答。

這是因為我們創建一個 ByteBuffer 的時候默認是處于寫模式的,此時如果去通過 position 和 limit 去讀取數據是讀不到的。所以在調用 write 之前,我們需要先將 ByteBuffer 切換到讀模式,完整代碼如下:

  1. public static void main(String[] args) throws IOException { 
  2.   // 指定需要生成的文件名稱 
  3.   String generateFileName = "generate-file.txt"
  4.   // 創建一個輸出流 
  5.   FileOutputStream fileOutputStream = new FileOutputStream(generateFileName); 
  6.   // 通過輸出流獲取到 channel 
  7.   FileChannel fileChannel = fileOutputStream.getChannel(); 
  8.  
  9.   // 準備好 ByteBuffer, 并向里面寫入數據 
  10.   ByteBuffer buffer = ByteBuffer.allocate(16); 
  11.   buffer.put("shDEQuanZhanBiJi".getBytes(StandardCharsets.UTF_8)); 
  12.  
  13.   // 將 ByteBuffer 切換到讀模式 
  14.   buffer.flip(); 
  15.   // 將 輸入流 的 channel 的數據讀入 buffer 中 
  16.   fileChannel.write(buffer); 
  17.    
  18.   fileChannel.close(); 

可以看到,文件生成了,內容也有了:

但是呢,上面將的兩種要么只能寫,要么只能讀。例如 FileInputStream 如果你硬要往 channel 里懟數據,程序最后會拋出 NonWritableChannelException 異常,告訴你這玩意兒寫不了。

那有沒有一個既能寫,又能讀還能唱跳的實現呢?當然有,那就是 RandomAccessFile。

這里提一嘴,調用完 write 并不是立即就寫入磁盤,也可以在操作系統的緩存里。如果需要立即刷盤,則調用 channel.force(true); 即可。

RandomAccessFile

怎么用的呢?其實跟之前兩個差不多:

  1. public static void main(String[] args) throws IOException { 
  2.   // 指定需要生成的文件名稱 
  3.   String targetFileName = "target-file.txt"
  4.   // 創建 RandomAccessFile, 賦予可讀(r)、可寫(w)的權限 
  5.   RandomAccessFile accessFile = new RandomAccessFile(targetFileName, "rw"); 
  6.   FileChannel fileChannel = accessFile.getChannel(); 
  7.  
  8.   // 創建 ByteBuffer 并寫入數據 
  9.   ByteBuffer buffer = ByteBuffer.allocate(16); 
  10.   buffer.put("shDEQuanZhanBiJi".getBytes(StandardCharsets.UTF_8)); 
  11.   // 切換到 buffer 的讀模式 
  12.   buffer.flip(); 
  13.   // 調用 write 將 buffer 的數據寫入到 channel, channel 再寫數據到磁盤文件 
  14.   fileChannel.write(buffer); 
  15.  
  16.   // 相當于清空 buffer 
  17.   buffer.clear(); 
  18.   // 將之前寫入到 channel 的數據再讀入到 buffer 
  19.   fileChannel.read(buffer); 
  20.  
  21.   // 打印 buffer 中的內容 
  22.   printBuffer(buffer); 
  23.  
  24.   fileChannel.close(); 

運行之后的效果就是,會生成一個名為 target-file.txt 的文件,內容就是 shDEQuanZhanBiJi。并且控制臺會將之前寫入 channel 的 shDEQuanZhanBiJi 打印出來。

老規矩,細節都在注釋中。值得注意的是 new RandomAccessFile(targetFileName, "rw"); 里的 rw 。注釋里也寫了,代表賦予可讀、可寫的權限。

再值得注意的是,你不能說把 rw 改成 w。

不能這么玩,因為它就是一個單純的字符串匹配,可供選擇的就這么些:

mode 類型

  • 可以看到,r 必不可少...:
  • r 只能讀
  • rw 既能讀,也能寫

rws 和 rwd 功能和 rw 大致是相同的,可讀、可寫。唯一區別是他們會將每次改動強制刷到磁盤,并且 rws 會將操作系統對該文件的元數據也一起刷盤,體現就是文件的更新時間會更新,而 rwd 不會將文件的元數據刷盤

  1. 兩個 SocketChannel 

由于這倆一個負責連接傳輸,另一個負責連接的監聽,所以就放在一起來講了。這一小節我們大概要做這件事:

客戶端發送文件到服務器

但是為了能讓大家直接運行起來,客戶端這側就不從磁盤文件讀取了,直接用 ByteBuffer。大家可以運行起來之后,自己嘗試從磁盤上去加載。還是先看代碼,首先是服務器的:

ServerSocketChannel

  1. public static void main(String[] args) throws IOException { 
  2.   // 打開一個 ServerSocketChannel 
  3.   ServerSocketChannel serverSocketChannel = ServerSocketChannel.open(); 
  4.   // 綁定 8080 端口 
  5.   serverSocketChannel.bind(new InetSocketAddress(8080)); 
  6.  
  7.   // 開始接受客戶端連接 
  8.   SocketChannel socketChannel = serverSocketChannel.accept(); 
  9.   // 獲取連接成功 
  10.   System.out.printf("socketChannel %s connected\n", socketChannel); 
  11.   // 準備 ByteBuffer 以從 socketChannel 中讀取數據 
  12.   ByteBuffer buffer = ByteBuffer.allocate(16); 
  13.  
  14.   // 開始讀取數據 
  15.   System.out.println("before read"); 
  16.   int read = socketChannel.read(buffer); 
  17.   System.out.printf("read complete, read bytes length: %s \n"read); 
  18.  
  19.   printBuffer(buffer); 

這里我們使用的是 Java NIO 中默認的阻塞模式,僅僅作為一個掩飾,如果想要 ServerSocketChannel 進入非阻塞模式,可在 open 之后,調用:

  1. serverSocketChannel.configureBlocking(false); 

由于我們這里是阻塞模式,所以在代碼運行到 serverSocketChannel.accept(); 時,會陷入阻塞狀態,直到有客戶端過來建立連接。同理,read 方法也是阻塞的,如果客戶端一直沒有寫入數據,那么服務器就會一直阻塞在 read 。

SocketChannel

直接先給代碼:

  1. public static void main(String[] args) throws IOException { 
  2.   // 打開一個 SocketChannel 
  3.   SocketChannel socketChannel = SocketChannel.open(); 
  4.   // 連接到 localhost 的 8080 端口 
  5.   socketChannel.connect(new InetSocketAddress("localhost", 8080)); 
  6.  
  7.   // 準備 ByteBuffer 
  8.   ByteBuffer buffer = ByteBuffer.allocate(16); 
  9.   buffer.put(Charset.defaultCharset().encode("test")); 
  10.  
  11.   // 將 buffer 切換成讀模式 & 向 channel 中寫入數據 
  12.   buffer.flip(); 
  13.   socketChannel.write(buffer); 

先啟動服務器,再啟動客戶端。可以看到服務器側的控制臺有如下的輸出:

  1. socketChannel java.nio.channels.SocketChannel[connected local=/127.0.0.1:8080 remote=/127.0.0.1:64373] connected 
  2. before read 
  3. read complete, read bytes length: 4  
  4. BUFFER VALUE: test 

Datagram

這個就比較簡單,首先是客戶端的代碼:

  1. public static void main(String[] args) throws IOException { 
  2.   DatagramChannel datagramChannel = DatagramChannel.open(); 
  3.  
  4.   // 構建 buffer 數據 
  5.   ByteBuffer buffer = ByteBuffer.allocate(16); 
  6.   buffer.put(Charset.defaultCharset().encode("test")); 
  7.  
  8.   // 切換到 buffer 的讀模式 
  9.   buffer.flip(); 
  10.   datagramChannel.send(buffer, new InetSocketAddress("localhost", 8080)); 

然后是服務器:

  1. public static void main(String[] args) throws IOException { 
  2.   DatagramChannel datagramChannel = DatagramChannel.open(); 
  3.   datagramChannel.bind(new InetSocketAddress(8080)); 
  4.  
  5.   ByteBuffer buffer = ByteBuffer.allocate(16); 
  6.   datagramChannel.receive(buffer); 
  7.  
  8.   printBuffer(buffer); 

 

責任編輯:武曉燕 來源: SH的全棧筆記
相關推薦

2022-01-02 08:43:46

Python

2022-02-07 11:01:23

ZooKeeper

2021-12-28 07:20:43

Hippo WebAssembly云原生

2022-03-14 08:16:00

Java程序開發

2021-11-30 19:58:51

Java問題排查

2023-05-08 08:21:15

JavaNIO編程

2022-06-30 22:53:18

數據結構算法

2021-08-01 07:19:16

語言OpenrestyNginx

2021-10-26 10:40:26

代理模式虛擬

2021-12-04 22:05:02

Linux

2022-05-17 08:02:55

GoTryLock模式

2021-07-06 08:59:18

抽象工廠模式

2023-11-28 08:29:31

Rust內存布局

2023-01-03 08:31:54

Spring讀取器配置

2021-07-02 09:45:29

MySQL InnoDB數據

2021-05-11 08:54:59

建造者模式設計

2022-08-23 08:00:59

磁盤性能網絡

2022-08-26 09:29:01

Kubernetes策略Master

2021-07-05 22:11:38

MySQL體系架構

2023-11-29 13:59:00

trait定義接口
點贊
收藏

51CTO技術棧公眾號

97精品一区| 天天免费亚洲黑人免费| 成人18视频日本| 国产精品99一区| 精品电影一区二区| 热草久综合在线| 青娱乐国产视频| 国产成人免费av一区二区午夜| 洋洋av久久久久久久一区| 麻豆视频成人| 国产免费一区二区三区最新不卡| 精品无码m3u8在线观看| 欧洲大片精品免费永久看nba| 精品久久中文字幕| 咪咪色在线视频| 日韩有码电影| 国产麻豆精品在线观看| 日本久久久a级免费| a级黄色片免费看| 国内成人精品| 日韩成人av网| 丰满少妇中文字幕| 99re久久| 色94色欧美sute亚洲线路一久| 18视频在线观看娇喘| 精品推荐蜜桃传媒| 北岛玲一区二区三区四区| 国产日韩换脸av一区在线观看| 久久中文字幕免费| 亚洲青涩在线| 久久成年人免费电影| 永久免费av无码网站性色av| 天海翼精品一区二区三区| 日韩精品资源二区在线| 午夜激情影院在线观看| 国产精品原创视频| 欧美性三三影院| 国产l精品国产亚洲区久久| 国产桃色电影在线播放| 亚洲人成小说网站色在线| 日韩在线三级| 成人免费高清在线播放| 久久综合久久久久88| 久久99精品久久久久久久久久| jlzzjlzzjlzz亚洲人| 精品一区二区三区影院在线午夜| 国产精品久久久久7777婷婷| 成人免费视频国产免费| 久久一二三四| 国产精品高潮粉嫩av| 天堂网视频在线| 男女精品网站| 国产成人精品视频在线观看| 黄色片视频免费| 久久国产66| 国产不卡视频在线| 夜夜躁日日躁狠狠久久av| 日韩中文字幕一区二区三区| 国产精品久久久久久av下载红粉 | 日韩伦理视频| 视频直播国产精品| 亚洲波多野结衣| 亚洲综合激情在线| 欧美精品第一页在线播放| 日韩三级av在线| 亚洲欧美日本视频在线观看| 国产精品18久久久久久麻辣| 欧美另类高清videos的特点| 久久66热偷产精品| 91成人免费观看| 色屁屁草草影院ccyycom| 久久中文娱乐网| 亚洲日本精品一区| 中文字幕有码在线视频| 亚洲一区中文日韩| 日本女优爱爱视频| 亚洲伦理久久| 亚洲第一国产精品| 舐め犯し波多野结衣在线观看| 日韩精品1区| 欧美理论电影在线播放| 精品成人久久久| 奇米影视一区二区三区小说| 亚洲xxxx做受欧美| 天堂v视频永久在线播放| 国产精品网站在线| 国产成人一区二区三区别| 一级毛片久久久| 7777精品伊人久久久大香线蕉经典版下载| 无码国产精品一区二区高潮| 亚洲成在人线免费观看| 久久精品国产96久久久香蕉| 日韩少妇高潮抽搐| 久久成人精品无人区| 高清视频在线观看一区| 国产一级片在线| 亚洲精品一卡二卡| 欧美成人黑人猛交| 亚洲精品高潮| 亚洲色图25p| 国产在线视频二区| 蜜臀av性久久久久蜜臀av麻豆| 国产精品国产三级国产专区53| 国产在线一二三| 亚洲亚洲精品在线观看| av亚洲天堂网| 亚洲精品**不卡在线播he| 久久成人国产精品| 日本妇乱大交xxxxx| 不卡欧美aaaaa| 特级黄色录像片| 成人免费视频观看| 日韩高清欧美高清| 激情四射综合网| 久久福利资源站| 欧美日韩在线观看一区| 男男gaygays亚洲| 欧美日本韩国一区| xxxxx在线观看| 亚洲国产精品第一区二区| 成人欧美一区二区三区黑人孕妇| 国产在线色视频| 懂色aⅴ精品一区二区三区蜜月 | 中文字幕av资源| 91免费视频观看| 欧洲精品一区二区三区久久| 成人免费观看49www在线观看| 国产亚洲欧美aaaa| 69xxxx国产| 91蜜桃在线免费视频| 日韩黄色短视频| 久久av偷拍| 久久亚洲春色中文字幕| 国产一区二区三区四区视频 | 国产va在线播放| 麻豆精品久久久| 午夜精品一区二区在线观看| 欧美香蕉视频| 伊人一区二区三区久久精品 | 嗯啊主人调教在线播放视频 | 日韩欧美大尺度| 在线黄色免费网站| 在线观看日韩av电影| 国产精品一区免费观看| 黄色影院在线看| 亚洲成年人在线播放| 国产无遮挡又黄又爽又色| 国产.欧美.日韩| 欧美精品自拍视频| 老司机精品在线| 欧洲美女7788成人免费视频| 青青草手机在线| 色成年激情久久综合| 五月婷婷欧美激情| 久久精品999| 做爰高潮hd色即是空| 免费欧美网站| 欧美精品999| 天堂а√在线8种子蜜桃视频| 色综合咪咪久久| 一二三四国产精品| 精品在线一区二区| 欧美日韩激情四射| 久久365资源| 日韩av123| 欧美激情免费| 欧美电影免费提供在线观看| 国产无码精品视频| 国产欧美日韩不卡免费| 国产欧美精品一二三| 亚洲国产高清一区| 欧洲亚洲一区二区| av在线成人| 久久青草福利网站| 男人天堂资源在线| 欧美日韩国产综合视频在线观看| 国产精品成人69xxx免费视频 | 91精品久久久久久久久| 色呦呦在线观看视频| 亚洲黄色成人网| 午夜视频网站在线观看| 亚洲综合在线视频| 日本一区二区三区网站| 精品亚洲成a人| 免费毛片网站在线观看| 精品国产乱码| 成人在线看片| 在线看欧美视频| 欧美激情在线观看| 日本中文在线观看| 亚洲精品按摩视频| 国产美女主播在线观看| 岛国视频午夜一区免费在线观看| 亚洲一级二级片| 久久亚区不卡日本| 国产在线一二| 欧美一卡在线观看| 国产超碰人人爽人人做人人爱| 国产欧美日韩精品一区| av免费观看不卡| 久久99久久99| 四虎永久在线精品无码视频| 91超碰国产精品| 日本视频一区二区不卡| 国产精品xxxav免费视频| 国产欧美久久一区二区| 咪咪网在线视频| 欧美成人精品在线| 自拍视频在线免费观看| 日韩精品视频中文在线观看 | 久久一二三四| 免费看黄在线看| 欧美 日韩 国产 一区| 亚洲精品影院| 亚洲小说图片| 国产精品久久久久久久天堂第1集| 日韩三级一区| 国产精品成久久久久三级| 川上优av中文字幕一区二区| 欧美大奶子在线| 黄色网页在线免费看| 在线观看日韩视频| 男人av在线| 亚洲精品美女免费| 天堂在线资源网| 亚洲国产成人在线视频| 亚洲第一天堂网| 日韩无一区二区| 国产三级视频在线播放| 欧美色中文字幕| 伊人成年综合网| 91久久香蕉国产日韩欧美9色| 91九色丨porny丨肉丝| 亚洲成年人网站在线观看| 久久久久久久久99| 一区二区三区中文免费| 懂色av懂色av粉嫩av| 亚洲另类在线视频| 国产一二三区精品| 亚洲欧美日韩国产另类专区| 一区二区三区四区五区| 亚洲欧美色一区| 高h视频免费观看| 亚洲精品国产精华液| 欧美黄色免费观看| 亚洲无人区一区| 日韩av在线播| 欧美午夜视频一区二区| 精品人妻一区二区三区潮喷在线 | 亚洲天堂网在线视频| 欧美视频在线观看一区二区| 伊人网中文字幕| 制服.丝袜.亚洲.另类.中文| 国产欧美一级片| 国产一区在线观看视频| 成人在线视频网站| 色综合久久久| 91九色蝌蚪国产| 国产+成+人+亚洲欧洲在线| 国产精品久久九九| 亚洲精品合集| 色女孩综合网| 亚洲女同中文字幕| 日韩精品一区在线视频| 国产亚洲毛片| 美女一区二区三区视频| 久久 天天综合| 麻豆av免费看| 95精品视频在线| 潮喷失禁大喷水aⅴ无码| 亚洲欧美另类小说| 日本在线观看中文字幕| 色综合久久99| 国产一区二区三区四区视频| 欧美精品一区二区精品网| 日本在线一二三| 日韩在线观看av| 51av在线| 91精品国产综合久久久久久久久 | 黑人と日本人の交わりビデオ| 自拍偷自拍亚洲精品播放| 豆国产97在线 | 亚洲| 91福利区一区二区三区| 精品国产免费无码久久久| 日韩电影在线观看永久视频免费网站| 成人高潮成人免费观看| 欧美黑人又粗大| 久久精品女人天堂av免费观看| 成人a级免费视频| 婷婷精品视频| 欧美日韩一级在线| 久久大逼视频| 99999精品| 国产午夜一区二区三区| 久久久久久久久99| 欧美日韩成人一区| 五月婷婷深深爱| 久久av中文字幕| 欧美极度另类| 国产精品免费看一区二区三区| 成人av二区| 日韩人妻精品无码一区二区三区| 国内成人精品2018免费看| 人妻少妇一区二区| 午夜欧美大尺度福利影院在线看 | 日韩av最新在线观看| а√天堂官网中文在线| 国产精品久久久久久影视 | 国产老女人精品毛片久久| 三上悠亚ssⅰn939无码播放 | 欧美国产不卡| 好吊色视频988gao在线观看| 日韩二区在线观看| 国产精品探花一区二区在线观看| 一区二区三区精品在线观看| 一区二区三区免费在线| 国产一区二区av| 18aaaa精品欧美大片h| 91传媒免费看| 天堂网在线观看国产精品| 韩国日本美国免费毛片| 久久综合久色欧美综合狠狠| 日韩特黄一级片| 亚洲成人久久久| 久色国产在线| 成人免费视频观看视频| 国产精品黄色| 日本成人在线免费观看| 亚洲丝袜自拍清纯另类| 国产又粗又黄又爽视频| 色妞久久福利网| 久久免费资源| 亚洲综合av一区| 久久精品久久精品| 少妇视频一区二区| 欧美乱妇一区二区三区不卡视频| 99精品老司机免费视频| 国产精品久久久久久久久久小说| 国产精品免费大片| av丝袜天堂网| 国产精品美女久久福利网站| 国产天堂第一区| 中文字幕一精品亚洲无线一区 | 日韩毛片视频在线看| 久久精品视频2| 亚洲视频一区二区| 欧美国产日韩电影| 亚洲视频在线观看日本a| 久久狠狠亚洲综合| 国产色无码精品视频国产| 欧美一区二区三区思思人| 97影院秋霞午夜在线观看| 99久久自偷自偷国产精品不卡| 欧美精选一区| 青青草视频网站| 第一福利永久视频精品| 激情小视频在线观看| 国产男女猛烈无遮挡91| 亚洲电影影音先锋| 日韩免费高清一区二区| 色综合一个色综合| h视频网站在线观看| 成人激情综合网| 亚洲国产99| 亚洲ⅴ国产v天堂a无码二区| 91精品在线观看入口| 成人女同在线观看| 日本在线免费观看一区| 国产最新精品精品你懂的| 免看一级a毛片一片成人不卡| 日韩精品免费在线观看| 一区在线影院| 日本中文字幕在线视频观看| 91蜜桃传媒精品久久久一区二区| 伊人精品一区二区三区| 欧美国产视频一区二区| 特黄特色欧美大片| 亚洲欧美天堂在线| 午夜视黄欧洲亚洲| 视频免费一区| 国产在线视频欧美一区二区三区| 日韩不卡免费视频| 久久久夜色精品| 亚洲香蕉伊综合在人在线视看| 成人噜噜噜噜| 北条麻妃视频在线| 一区二区不卡在线播放| 精品成人一区二区三区免费视频| 91在线观看免费观看| 亚洲免费影院| 青青青在线免费观看| 亚洲色图激情小说| 成人看片黄a免费看视频| 中文字幕网av| 天天免费综合色| www久久日com| 日本a级片久久久| 不卡的av在线| 国产精品探花视频| 国产成人高潮免费观看精品|