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

用nio實現Echo服務

開發 后端
今天突然間想用nio實現個Echo服務,程序實現起來實現不算困難,但跑起來后,在Server端的ServerSocket完成accept之后,我的CPU總是跳到100%。嗯,小郁悶,后來,才發現自己在Server端注冊了多余的監聽事件SelectionKey.OP_WRITE,改過來后好多了,希望記住這個教訓。

今天突然間想用nio實現個Echo服務,程序實現起來實現不算困難,但跑起來后,在Server端的ServerSocket完成accept之后,我的CPU總是跳到100%。嗯,小郁悶,后來,才發現自己在Server端注冊了多余的監聽事件SelectionKey.OP_WRITE,改過來后好多了,希望記住這個教訓。

EchoServer.java

  1. package edu.dlut.zxf.nio;  
  2.  
  3. import java.io.IOException;  
  4. import java.net.InetAddress;  
  5. import java.net.InetSocketAddress;  
  6. import java.nio.ByteBuffer;  
  7. import java.nio.channels.SelectionKey;  
  8. import java.nio.channels.Selector;  
  9. import java.nio.channels.ServerSocketChannel;  
  10. import java.nio.channels.SocketChannel;  
  11. import java.util.Set;  
  12.  
  13. /**  
  14.  * Echo服務器  
  15.  * @author finux  
  16.  */ 
  17. public class EchoServer {  
  18.     public final static int BUFFER_SIZE = 1024//默認端口  
  19.     public final static String HOST = "210.30.107.17";  
  20.     public final static int PORT = 8888;  
  21.       
  22.     public static void main(String[] args) {  
  23.         ServerSocketChannel ssc = null;  
  24.         //緩沖區  
  25.         ByteBuffer buffer = ByteBuffer.allocate(BUFFER_SIZE);  
  26.         Selector selector = null;  
  27.         try {  
  28.             selector = Selector.open();  
  29.             ssc = ServerSocketChannel.open();  
  30.             ssc.socket().bind(new InetSocketAddress(InetAddress.getByName(HOST), PORT));  
  31.             ssc.configureBlocking(false);  
  32.             ssc.register(selector, SelectionKey.OP_ACCEPT);       
  33.             print("服務器啟動,準備好連接...");  
  34.             while (selector.select() > 0) {       
  35.                 Set<SelectionKey> selectionKeys = selector.selectedKeys();  
  36.                 for (SelectionKey key: selectionKeys) {  
  37.                     if (key.isAcceptable()) {  
  38.                         SocketChannel sc = ssc.accept();  
  39.                         print("有新的連接!地址:" + sc.socket().getRemoteSocketAddress());  
  40.                         sc.configureBlocking(false);  
  41.                         sc.register(selector, SelectionKey.OP_READ);  
  42.                         // 不要寫成:  
  43.                         // sc.register(selector, SelectionKey.OP_READ | SelectionKey.OP_WRITE);  
  44.                         // 畢竟這樣多注冊的無用的事件SelectionKey.OP_WRTE  
  45.                         // 如果是這樣,在完成accept后,CPU也許會跑到100%  
  46.                           
  47.                     }  
  48.                     //same to if ((ops & SelectionKey.OP_READ) == SelectionKey.OP_READ) {  
  49.                     if (key.isReadable()) {   
  50.                         SocketChannel sc = (SocketChannel)key.channel();  
  51.                         print("有新的讀??!地址:" + sc.socket().getRemoteSocketAddress());                        
  52.                         buffer.clear();                       
  53.                         sc.read(buffer);  
  54.                         buffer.flip();  
  55.                         byte[] b = new byte[buffer.limit()];  
  56.                         buffer.get(b);  
  57.                         String s = new String(b);  
  58.                         if (s.equals("bye")) {  
  59.                             print("斷開連接:" + sc.socket().getRemoteSocketAddress());    
  60.                             //斷開連接后,取消此鍵的通道到其選擇器的注冊  
  61.                             key.cancel();  
  62.                             sc.close();  
  63.                             continue;  
  64.                         }  
  65.                         print("讀取的內容為:" + s);     
  66.                         buffer.clear();  
  67.                         s = "echo: " + s;  
  68.                         buffer.put(s.getBytes());  
  69.                         buffer.flip();  
  70.                         sc.write(buffer);  
  71.                     }   
  72.                 }  
  73.                 selectionKeys.clear();  
  74.             }  
  75.         } catch(IOException e) {  
  76.             e.printStackTrace();  
  77.         }   
  78.     }  
  79.       
  80.     private static void print(String s) {  
  81.         System.out.println(s);  
  82.     }  

EchoClient.java

  1. package edu.dlut.zxf.nio;  
  2.  
  3. import java.util.Set;  
  4. import java.io.BufferedReader;  
  5. import java.io.IOException;  
  6. import java.io.InputStreamReader;  
  7. import java.net.InetSocketAddress;  
  8. import java.net.InetAddress;  
  9. import java.nio.ByteBuffer;  
  10. import java.nio.channels.SelectionKey;  
  11. import java.nio.channels.Selector;  
  12. import java.nio.channels.SocketChannel;  
  13.  
  14. /**  
  15.  * Echo客戶端  
  16.  * @author finux  
  17.  */ 
  18. public class EchoClient {  
  19.     public static void main(String[] args) {  
  20.         ByteBuffer buffer = ByteBuffer.allocate(EchoServer.BUFFER_SIZE);  
  21.         Selector selector = null;  
  22.         SocketChannel sc = null;  
  23.         try {  
  24.             selector = Selector.open();  
  25.             sc = SocketChannel.open();  
  26.             sc.configureBlocking(false);  
  27.             sc.connect(new InetSocketAddress(InetAddress.getByName(EchoServer.HOST), EchoServer.PORT));  
  28.             print("客戶端啟動,準備連接...");  
  29.             if (sc.isConnectionPending()) {  
  30.                 sc.finishConnect();  
  31.             }  
  32.             print("完成連接");  
  33.             sc.register(selector, SelectionKey.OP_READ | SelectionKey.OP_WRITE);  
  34.               
  35.             boolean writed = false;  
  36.             boolean down = false;  
  37.             while (!down && selector.select() > 0) {                  
  38.                 Set<SelectionKey> selectionKeys = selector.selectedKeys();  
  39.                 for (SelectionKey key: selectionKeys) {                   
  40.                     //int ops = key.readyOps();  
  41.                     //if ((ops & SelectionKey.OP_WRITE) == SelectionKey.OP_WRITE && !writed) {  
  42.                     if (key.isWritable() && !writed) {  
  43.                         System.out.print("Input(bye to end): ");  
  44.                         BufferedReader br = new BufferedReader(new InputStreamReader(System.in));   
  45.                         String s = br.readLine();  
  46.                         if (s != null && !s.trim().equals("")) {  
  47.                             buffer.clear();  
  48.                             buffer.put(s.getBytes());  
  49.                             buffer.flip();  
  50.                             sc.write(buffer);  
  51.                             writed = true;  
  52.                             if (s.equals("bye")) {  
  53.                                 down = true;  
  54.                                 break;  
  55.                             }  
  56.                         }  
  57.                     }  
  58.                     //if ((ops & SelectionKey.OP_READ) == SelectionKey.OP_READ && writed) {  
  59.                     if (key.isReadable() && writed) {  
  60.                         buffer.clear();  
  61.                         sc.read(buffer);  
  62.                         buffer.flip();  
  63.                         byte[] b = new byte[buffer.limit()];  
  64.                         buffer.get(b);  
  65.                         print(new String(b));  
  66.                         writed = false;  
  67.                     }  
  68.                 }  
  69.                 selectionKeys.clear();  
  70.             }  
  71.         } catch(IOException e) {  
  72.             e.printStackTrace();  
  73.         }  
  74.     }  
  75.       
  76.     private static void print(String s) {  
  77.         System.out.println(s);  
  78.     }  

當然EchoClient也可以像下面這樣來實現:

EchoClient2.java

  1. package edu.dlut.zxf.nio;  
  2.  
  3. import java.util.Set;  
  4. import java.io.BufferedReader;  
  5. import java.io.IOException;  
  6. import java.io.InputStreamReader;  
  7. import java.net.InetSocketAddress;  
  8. import java.net.InetAddress;  
  9. import java.nio.ByteBuffer;  
  10. import java.nio.channels.SelectionKey;  
  11. import java.nio.channels.Selector;  
  12. import java.nio.channels.SocketChannel;  
  13.  
  14. /**  
  15.  * Echo客戶端2  
  16.  * @author finux  
  17.  */ 
  18. public class EchoClient2 {  
  19.     public static void main(String[] args) {  
  20.         ByteBuffer buffer = ByteBuffer.allocate(EchoServer.BUFFER_SIZE);  
  21.         Selector selector = null;  
  22.         SocketChannel sc = null;  
  23.         try {  
  24.             selector = Selector.open();  
  25.             sc = SocketChannel.open();  
  26.             sc.configureBlocking(false);  
  27.             sc.register(selector, SelectionKey.OP_CONNECT);  
  28.             sc.connect(new InetSocketAddress(InetAddress.getByName(EchoServer.HOST), EchoServer.PORT));  
  29.             print("客戶端啟動,準備連接...");  
  30.               
  31.             boolean writed = false;  
  32.             boolean down = false;  
  33.             while (!down && selector.select() > 0) {                  
  34.                 Set<SelectionKey> selectionKeys = selector.selectedKeys();  
  35.                 for (SelectionKey key: selectionKeys) {                   
  36.                     //int ops = key.readyOps();  
  37.                     //if ((ops & SelectionKey.OP_CONNECT) == SelectionKey.OP_CONNECT) {  
  38.                     if (key.isConnectable()) {  
  39.                         print("完成連接!");  
  40.                         if (sc.isConnectionPending()) {  
  41.                             sc.finishConnect();  
  42.                         }  
  43.                         sc.register(selector, SelectionKey.OP_READ | SelectionKey.OP_WRITE);                  
  44.                     }  
  45.                     //if ((ops & SelectionKey.OP_WRITE) == SelectionKey.OP_WRITE && !writed) {  
  46.                     if (key.isWritable() && !writed) {  
  47.                         //從準備IO中讀取內容  
  48.                         System.out.print("Input(bye to end): ");  
  49.                         BufferedReader br = new BufferedReader(new InputStreamReader(System.in));   
  50.                         String s = br.readLine();  
  51.                         if (s != null && !s.trim().equals("")) {  
  52.                             buffer.clear();  
  53.                             buffer.put(s.getBytes());  
  54.                             buffer.flip();  
  55.                             sc.write(buffer);  
  56.                             writed = true;  
  57.                             if (s.equals("bye")) {  
  58.                                 down = true;  
  59.                                 break;  
  60.                             }  
  61.                         }  
  62.                     }  
  63.                     //if ((ops & SelectionKey.OP_READ) == SelectionKey.OP_READ && writed) {  
  64.                     if (key.isReadable() && writed) {  
  65.                         buffer.clear();  
  66.                         sc.read(buffer);  
  67.                         buffer.flip();  
  68.                         byte[] b = new byte[buffer.limit()];  
  69.                         buffer.get(b);  
  70.                         print(new String(b));  
  71.                         writed = false;  
  72.                     }  
  73.                 }  
  74.                 selectionKeys.clear();  
  75.             }  
  76.         } catch(IOException e) {  
  77.             e.printStackTrace();  
  78.         }  
  79.     }  
  80.       
  81.     private static void print(String s) {  
  82.         System.out.println(s);  
  83.     }  

但是這樣的話,顯然EchoClient2中的while循環中的for循環(若有n次),在每次循環中都會多出n-1次if判斷,就是下面這個:

  1. if (key.isConnectable()) { 

所以,我個人更喜歡***個EchoClient,呵呵,不用注冊SelectionKey.OP_CONNECT監聽事件。呵呵...

原文鏈接:http://finux.iteye.com/blog/368955

【編輯推薦】

  1. Java NIO 深入研究
  2. Java NIO聊天窗口實例
  3. Java NIO 經典實例代碼
  4. Java NIO性能測試
  5. Java NIO TCP編程
責任編輯:林師授 來源: finux的博客
相關推薦

2023-03-31 07:49:51

syscall庫Echo Serve

2011-12-07 16:50:29

JavaNIO

2020-04-16 15:20:43

PHP前端BIO

2011-12-07 17:05:45

JavaNIO

2011-12-08 10:12:34

JavaNIO

2011-12-08 13:04:06

JavaNIO

2012-04-11 15:41:48

JavaNIO

2022-11-04 08:29:12

NodejsHttp 服務

2023-08-22 11:00:16

云計算容器微服務

2011-09-30 13:04:17

51CTO博客一周熱門監控網絡

2011-03-11 09:51:47

Java NIO

2011-12-08 09:37:36

JavaNIO

2022-08-11 08:03:43

隊列

2010-09-10 14:03:47

echo協議

2018-06-15 10:25:43

Python HTTPFTP服務器

2018-12-06 09:23:33

2024-11-29 10:23:35

2014-01-02 15:16:42

PythonLinux服務器服務器監控

2011-12-07 15:21:50

JavaNIO

2011-12-15 09:40:06

Javanio
點贊
收藏

51CTO技術棧公眾號

亚洲成人午夜影院| 亚洲综合影视| 亚洲一区二区动漫| 亚洲电影免费观看| 一区二区三区欧美在线观看| 国产精品∨欧美精品v日韩精品| 国产熟妇久久777777| 青青草原av在线| 91蝌蚪porny| 国产又爽又黄的激情精品视频| 劲爆欧美第一页| 一区二区美女| 日韩视频一区二区在线观看| 国产资源在线视频| 免费**毛片在线| 99国内精品久久| 91精品啪aⅴ在线观看国产| 日韩欧美亚洲一区二区三区| 久久在线视频| 亚洲美女福利视频网站| 人妻体体内射精一区二区| 欧美一区国产| 亚洲图片欧美一区| 在线天堂一区av电影| 午夜性色福利视频| 国产成人一级电影| 国内精品视频一区二区三区八戒| 久久人人爽人人爽人人片av高请| 精品人体无码一区二区三区| 蜜桃一区av| 91精品国产欧美日韩| 日本999视频| 日本三级一区| 亚洲午夜激情av| 日韩 欧美 自拍| 午夜视频成人| 国产女同互慰高潮91漫画| 成人动漫在线视频| 国产精品特级毛片一区二区三区| 日韩1区2区3区| 欧美亚洲国产另类| 国产性xxxx高清| 国产中文一区| 欧美成人剧情片在线观看| 99久久久无码国产精品不卡| 精品久久影院| 亚洲香蕉av在线一区二区三区| 白嫩情侣偷拍呻吟刺激| 日本高清久久| 欧美一级免费观看| 日本一区二区三区在线免费观看| 欧美一级做a| 欧美卡1卡2卡| 国产男女无遮挡猛进猛出| 中文成人在线| 4438x成人网最大色成网站| 成人性视频欧美一区二区三区| 亚洲风情在线资源| 日韩欧美成人精品| 国产第一页视频| 日韩欧美少妇| 欧美日韩一区二区三区免费看| 少妇黄色一级片| 成人影院在线免费观看| 亚洲欧美日韩久久久久久| 麻豆av一区| 欧美一区二区三区成人片在线| 国产·精品毛片| 成年人在线观看av| 性国产高清在线观看| 国产精品成人免费在线| 中文字幕精品—区二区日日骚| 人妻av一区二区| 精品久久亚洲| 日韩亚洲电影在线| 国产亚洲色婷婷久久| 999久久精品| 亚洲国产中文字幕久久网| 午夜久久久久久久| 国产亚洲欧美日韩在线观看一区二区 | 岛国av在线网站| 精品国产1区2区| 狠狠热免费视频| 国产视频一区二区在线播放| 精品久久人人做人人爱| 蜜桃麻豆影像在线观看| 日韩欧美一区二区在线| 天天色综合社区| 亚洲综合影院| 亚洲精品综合精品自拍| 在线观看天堂av| 国产综合网站| 国产福利精品av综合导导航| 国产视频在线免费观看| av成人老司机| 亚洲一区在线免费| 蜜桃传媒在线观看免费进入| 色偷偷久久人人79超碰人人澡| 久久久精品高清| 人人精品亚洲| 久久精品国产精品| 天天操天天操天天操天天| 久久国产精品一区二区| 国产精品香蕉视屏| 永久免费av片在线观看全网站| 亚洲一区二区三区小说| av一区二区三| 亚洲网色网站| 欧美在线视频免费观看| 一区二区视频在线免费观看| eeuss国产一区二区三区| 视频一区视频二区视频三区视频四区国产 | 亚洲综合在线第一页| 日本不卡在线观看视频| www.久久久.com| 亚洲视频国产视频| 日本三级视频在线| 精品一区二区国语对白| 444亚洲人体| 欧美性猛交xxxxx少妇| 999亚洲国产精| 91久久精品国产| 国产中文字幕在线| 亚洲v精品v日韩v欧美v专区| 欧美在线aaa| 偷拍视屏一区| 久久久久久久久久国产精品| 国产精品特级毛片一区二区三区| 久久五月婷婷丁香社区| 国产日韩av网站| 国产剧情一区二区在线观看| 中文欧美在线视频| 日韩电影在线观看一区二区| youjizz国产精品| www.亚洲成人网| 不卡一区视频| 亚洲国产一二三区| 精品在线一区二区三区| 日本一区精品| 一本大道色婷婷在线| 精品乱人伦一区二区三区| 日本激情视频一区二区三区| 日韩**一区毛片| 涩涩涩999| 99久久伊人| 视频直播国产精品| 亚洲一区二区视频在线播放| 国产精品影院在线观看| 亚洲欧洲综合网| 日韩精品视频网站| 日韩.欧美.亚洲| 成人开心激情| 永久免费看mv网站入口亚洲| 国模私拍一区二区| 中文字幕 久热精品 视频在线| 亚洲欧美另类动漫| 黑人巨大精品欧美一区二区一视频| 亚洲高清视频一区二区| 蜜桃精品在线| 夜夜嗨av一区二区三区免费区| 少妇高潮av久久久久久| 久久久99精品久久| 嫩草影院国产精品| 日韩免费视频| 亚洲r级在线观看| 在线中文字日产幕| 999成人网| 91视频免费网站| 视频在线这里都是精品| 亚洲国产精品福利| 人妻丰满熟妇av无码区| 国产日本欧洲亚洲| 日韩av片免费观看| 亚洲视频观看| 欧美lavv| 日韩成人在线电影| 欧美黑人巨大xxx极品| 涩涩视频免费看| 色8久久精品久久久久久蜜| 国产aaaaaaaaa| 国产一区不卡精品| 国产网站免费在线观看| 日韩成人免费| 国产精成人品localhost| 亚洲成av在线| 欧美激情xxxx| av黄色在线观看| 日韩欧美国产三级电影视频| 亚洲高清毛片一区二区| 国产精品高潮呻吟久久| 日韩无码精品一区二区| 日韩黄色免费电影| 亚洲乱码日产精品bd在线观看| 亚洲大片精品免费| 亚洲一区国产精品| 97se综合| 欧美日本中文字幕| 国产黄色片在线播放| 精品国产乱码久久久久久久久 | 一区在线免费观看| 日韩不卡av| 国产伦理久久久久久妇女 | 欧美另类极品videosbest最新版本| 五月婷婷久久久| 91精品国产黑色紧身裤美女| 超碰超碰超碰超碰| 亚洲国产一区二区在线播放| 又嫩又硬又黄又爽的视频| www.激情成人| 女人扒开腿免费视频app| 视频在线观看一区| 97视频在线免费| 小处雏高清一区二区三区| 裸模一区二区三区免费| 香港久久久电影| 国产在线高清精品| 日韩另类视频| 69久久夜色精品国产69| 91高清在线观看视频| 在线观看中文字幕亚洲| 深夜福利在线看| 精品国产乱码久久久久久图片 | 人人鲁人人莫人人爱精品| 午夜精品三级视频福利| 99在线播放| 日韩视频亚洲视频| sese在线视频| 亚洲一级免费视频| 日本在线丨区| 日韩电影免费观看在线观看| 亚洲伦理在线观看| 日韩欧美一级片| av一级黄色片| 7777精品伊人久久久大香线蕉超级流畅 | 国产伦精品免费视频| 欧洲亚洲两性| 日韩av免费在线观看| 中文在线а√天堂| 日本高清久久天堂| 欧美艳星kaydenkross| 日本久久久a级免费| 免费高潮视频95在线观看网站| 国内自拍欧美激情| xxxx另类黑人| 8050国产精品久久久久久| 成人自拍在线| 91综合免费在线| 天天综合91| 国产精品尤物福利片在线观看| 另类中文字幕国产精品| 国产精品入口免费视频一| 精品视频一区二区三区四区五区| 日韩免费在线播放| 成人在线视频播放| 国产精品国内视频| 国产视频欧美| 成年丰满熟妇午夜免费视频 | 亚洲最新中文字幕| av在线电影院| 精品国产视频在线| 伊人福利在线| 91产国在线观看动作片喷水| 日韩动漫一区| 亚洲tv在线观看| 国产一区二区av在线| 97免费资源站| 国产精品任我爽爆在线播放| 精品中文字幕一区| 国产精品一区二区av交换| 视频一区三区| 亚洲精品国产首次亮相| 黄色特一级视频| 日韩午夜免费视频| 超碰影院在线观看| 精品在线观看免费| 中文字幕一区二区三区人妻在线视频| 成人精品国产一区二区4080| 麻豆国产精品一区| 亚洲国产精品精华液2区45| 四虎影院中文字幕| 亚洲韩国一区二区三区| 一级片视频在线观看| 欧美日韩一区二区在线观看视频| 亚洲精品久久久久久动漫器材一区| 日韩精品在线播放| 日本三级在线播放完整版| 欧美激情一二三| 国产一区二区主播在线| 亚洲精品日韩av| 天天久久夜夜| 国产免费一区二区三区四在线播放 | 天堂网www中文在线| 在线观看欧美成人| xxx.xxx欧美| 国产精品吴梦梦| 国产精品宾馆| 一区二区三区四区欧美| 亚洲美洲欧洲综合国产一区| 欧美大尺度做爰床戏| 成人午夜在线免费| 日本不卡一区视频| 精品福利在线看| 国产农村妇女毛片精品| 亚洲欧美制服中文字幕| 3d玉蒲团在线观看| 国产精品久久久久9999| www国产精品| 宅男噜噜99国产精品观看免费| 亚洲人成久久| 久久aaaa片一区二区| 国产视频一区二区在线| 日韩成人一区二区三区| 欧美另类高清zo欧美| 国产综合视频一区二区三区免费| 欧美激情视频一区二区三区不卡| 国产69精品久久久久按摩| 精品视频免费观看| 国产精品a级| 中文字幕色网站| 国产精品污污网站在线观看| 久久露脸国语精品国产91| 日韩一区二区三区高清免费看看| 高h视频在线| 欧洲中文字幕国产精品| 伦理一区二区三区| 日韩精品久久一区二区| 国产又黄又大久久| 美女视频久久久| 欧美私模裸体表演在线观看| 你懂的视频在线播放| 91精品国产色综合| 草草视频在线一区二区| 成年人视频大全| 国产精品影视在线| 夫妻性生活毛片| 91精品在线免费观看| 日本高清在线观看wwwww色| 国产精品久久久久久久久久久新郎| 日韩欧美在线精品| 国模无码视频一区二区三区| 成人国产精品免费观看动漫| 国产亚洲第一页| 亚洲成人999| 97蜜桃久久| 久草精品电影| 亚洲免费一区二区| 日韩av在线看免费观看| 色婷婷久久综合| 黄上黄在线观看| 国产精品久久久久久久久久ktv | 中文字幕久久精品| 国产第一亚洲| 亚洲国产午夜伦理片大全在线观看网站 | 欧美一区二粉嫩精品国产一线天| 日本欧美韩国国产| 国产男女无遮挡| 日本一区二区三区在线观看| 中文字幕人妻互换av久久| 色爱av美腿丝袜综合粉嫩av | 91精品婷婷国产综合久久| 大片免费在线观看| 成人av男人的天堂| 99精品欧美| 国产精成人品免费观看| 欧美日韩国产大片| 免费在线播放电影| 精品一区二区国产| 日韩在线一区二区三区| 日韩在线视频网址| 欧美mv日韩mv国产网站app| 九色porny丨入口在线| 日韩欧美视频一区二区三区四区 | 日本一区二区在线观看视频| 精品毛片三在线观看| 成年在线电影| 99久久伊人精品影院| 亚洲一区二区免费看| 亚洲av毛片基地| 日韩午夜在线观看| 亚洲插插视频| 中文字幕免费在线不卡| 成人av综合一区| 中文字幕观看在线| 欧美激情亚洲另类| 欧美在线色图| 一级少妇精品久久久久久久| 日本韩国欧美三级| av在线看片| 青娱乐一区二区| 国产风韵犹存在线视精品| 亚洲自拍一区在线观看| 僵尸世界大战2 在线播放| 亚洲视频高清| 在线观看国产精品一区| 91麻豆精品91久久久久同性| 国产盗摄精品一区二区酒店| 日本a级片久久久| 国产传媒一区在线| 久久亚洲精品石原莉奈| 欧美华人在线视频|