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

Java NIO 聊天室實例

開發 后端
最近寫了個Java NIO聊天室聊天的程序,NIO學習起來比較困難的,我的代碼能給大家起到一個拋磚引玉的作用!

最近寫了個Java NIO聊天室聊天的程序,NIO學習起來比較困難的,我的代碼能給大家起到一個拋磚引玉的作用!

服務端:

  1. package test.javanio;  
  2.  
  3. /**  
  4.  * @author   
  5.  * @version   
  6.  * CreateTime:2010-12-1 下午05:12:11  
  7.  * Description:  
  8.  */ 
  9. import java.io.IOException;  
  10. import java.net.InetSocketAddress;  
  11. import java.nio.ByteBuffer;  
  12. import java.nio.channels.SelectionKey;  
  13. import java.nio.channels.Selector;  
  14. import java.nio.channels.ServerSocketChannel;  
  15. import java.nio.channels.SocketChannel;  
  16. import java.util.Date;  
  17. import java.util.Iterator;  
  18. import java.util.logging.Level;  
  19. import java.util.logging.Logger;  
  20.  
  21. public class MySocketServer implements Runnable {  
  22.  
  23.     private boolean running;  
  24.  
  25.     private Selector selector;  
  26.     String writeMsg;  
  27.     StringBuffer sb = new StringBuffer();  
  28.     SelectionKey ssckey;  
  29.  
  30.     public MySocketServer() {  
  31.  
  32.         running = true;  
  33.  
  34.     }  
  35.  
  36.     public void init() {  
  37.         try {  
  38.             selector = Selector.open();  
  39.             ServerSocketChannel ssc = ServerSocketChannel.open();  
  40.             ssc.configureBlocking(false);  
  41.             ssc.socket().bind(new InetSocketAddress(2345));  
  42.             ssckey = ssc.register(selector, SelectionKey.OP_ACCEPT);  
  43.             System.out.println("server is starting..." + new Date());  
  44.         } catch (IOException ex) {  
  45.             Logger.getLogger(MySocketServer.class.getName()).log(Level.SEVERE,  
  46.                     null, ex);  
  47.         }  
  48.     }  
  49.  
  50.     public static void main(String[] args) {  
  51.         MySocketServer server = new MySocketServer();  
  52.         new Thread(server).start();  
  53.  
  54.     }  
  55.  
  56.     public void execute() {  
  57.         try {  
  58.             while (running) {  
  59.                 int num = selector.select();  
  60.                 if (num > 0) {  
  61.                     Iterator<SelectionKey> it = selector.selectedKeys()  
  62.                             .iterator();  
  63.                     while (it.hasNext()) {  
  64.                         SelectionKey key = it.next();  
  65.                         it.remove();  
  66.                         if (!key.isValid())  
  67.                             continue;  
  68.                         if (key.isAcceptable()) {  
  69.                             System.out.println("isAcceptable");  
  70.                             getConn(key);  
  71.                         } else if (key.isReadable()) {  
  72.                             System.out.println("isReadable");  
  73.                             readMsg(key);  
  74.                         }  
  75.  
  76.                         else if (key.isValid() && key.isWritable()) {  
  77.                             if (writeMsg != null) {  
  78.                                 System.out.println("isWritable");  
  79.                                 writeMsg(key);  
  80.                             }  
  81.  
  82.                         }  
  83.  
  84.                         else 
  85.                             break;  
  86.  
  87.                     }  
  88.  
  89.                 }  
  90.                 Thread.yield();  
  91.             }  
  92.  
  93.         } catch (IOException ex) {  
  94.             Logger.getLogger(MySocketServer.class.getName()).log(Level.SEVERE,  
  95.                     null, ex);  
  96.         }  
  97.     }  
  98.  
  99.     private void getConn(SelectionKey key) throws IOException {  
  100.         ServerSocketChannel ssc = (ServerSocketChannel) key.channel();  
  101.         SocketChannel sc = ssc.accept();  
  102.         sc.configureBlocking(false);  
  103.         sc.register(selector, SelectionKey.OP_READ);  
  104.         System.out.println("build connection :" 
  105.                 + sc.socket().getRemoteSocketAddress());  
  106.     }  
  107.  
  108.     private void readMsg(SelectionKey key) throws IOException {  
  109.         sb.delete(0, sb.length());  
  110.         SocketChannel sc = (SocketChannel) key.channel();  
  111.         System.out.print(sc.socket().getRemoteSocketAddress() + " ");  
  112.         ByteBuffer buffer = ByteBuffer.allocate(1024);  
  113.         buffer.clear();  
  114.         int len = 0;  
  115.         StringBuffer sb = new StringBuffer();  
  116.         while ((len = sc.read(buffer)) > 0) {  
  117.             buffer.flip();  
  118.             sb.append(new String(buffer.array(), 0, len));  
  119.         }  
  120.         if (sb.length() > 0)  
  121.             System.out.println("get from client:" + sb.toString());  
  122.         if (sb.toString().trim().toLowerCase().equals("quit")) {  
  123.             sc.write(ByteBuffer.wrap("BYE".getBytes()));  
  124.             System.out.println("client is closed " 
  125.                     + sc.socket().getRemoteSocketAddress());  
  126.             key.cancel();  
  127.             sc.close();  
  128.             sc.socket().close();  
  129.  
  130.         } else {  
  131.             String toMsg = sc.socket().getRemoteSocketAddress() + "said:" 
  132.                     + sb.toString();  
  133.             System.out.println(toMsg);  
  134.  
  135.             writeMsg = toMsg;  
  136.  
  137.             /*  
  138.              * Iterator<SelectionKey> it=key.selector().keys().iterator();  
  139.              *   
  140.              * while(it.hasNext()){ SelectionKey skey=it.next();  
  141.              * if(skey!=key&&skey!=ssckey){ SocketChannel client=(SocketChannel)  
  142.              * skey.channel(); client.write(ByteBuffer.wrap(toMsg.getBytes()));  
  143.              * }  
  144.              *   
  145.              * }  
  146.              */ 
  147.  
  148.             /*  
  149.              *   
  150.              * key.attach(toMsg);  
  151.              * key.interestOps(key.interestOps()|SelectionKey.OP_WRITE);  
  152.              */ 
  153.             Iterator<SelectionKey> it = key.selector().keys().iterator();  
  154.  
  155.             while (it.hasNext()) {  
  156.                 SelectionKey skey = it.next();  
  157.                 if (skey != key && skey != ssckey) {  
  158.                     if (skey.attachment() != null) {  
  159.                         String str = (String) skey.attachment();  
  160.                         skey.attach(str + toMsg);  
  161.                     } else {  
  162.                         skey.attach(toMsg);  
  163.                     }  
  164.                     skey  
  165.                             .interestOps(skey.interestOps()  
  166.                                     | SelectionKey.OP_WRITE);  
  167.                 }  
  168.  
  169.             }  
  170.             selector.wakeup();// 可有可無  
  171.  
  172.         }  
  173.  
  174.     }  
  175.  
  176.     public void run() {  
  177.         init();  
  178.         execute();  
  179.     }  
  180.  
  181.     private void writeMsg(SelectionKey key) throws IOException {  
  182.  
  183.         System.out.println("++++enter write+++");  
  184.         SocketChannel sc = (SocketChannel) key.channel();  
  185.         String str = (String) key.attachment();  
  186.  
  187.         sc.write(ByteBuffer.wrap(str.getBytes()));  
  188.         key.interestOps(SelectionKey.OP_READ);  
  189.     }  

客戶端:

  1. package test.javanio;  
  2.  
  3. /**  
  4.  * @author   
  5.  * @version   
  6.  * CreateTime:2010-12-1 下午05:12:46  
  7.  * Description:  
  8.  */ 
  9. import java.io.BufferedReader;  
  10. import java.io.IOException;  
  11. import java.io.InputStreamReader;  
  12. import java.net.InetSocketAddress;  
  13. import java.nio.ByteBuffer;  
  14. import java.nio.channels.Selector;  
  15. import java.nio.channels.SocketChannel;  
  16. import java.util.logging.Level;  
  17. import java.util.logging.Logger;  
  18. import java.util.Currency.*;  
  19.  
  20. public class MySocketClient implements Runnable {  
  21.     Selector selector;  
  22.  
  23.     boolean running;  
  24.  
  25.     SocketChannel sc;  
  26.  
  27.     public MySocketClient() {  
  28.         running = true;  
  29.  
  30.     }  
  31.  
  32.     public void init() {  
  33.         try {  
  34.             sc = SocketChannel.open();  
  35.             sc.configureBlocking(false);  
  36.             sc.connect(new InetSocketAddress("localhost"2345));  
  37.  
  38.         } catch (IOException ex) {  
  39.             Logger.getLogger(MySocketClient.class.getName()).log(Level.SEVERE,  
  40.                     null, ex);  
  41.         }  
  42.     }  
  43.  
  44.     public static void main(String[] args) {  
  45.  
  46.         MySocketClient client = new MySocketClient();  
  47.         new Thread(client).start();  
  48.     }  
  49.  
  50.     public void execute() {  
  51.  
  52.         int num = 0;  
  53.         try {  
  54.             while (!sc.finishConnect()) {  
  55.             }  
  56.         } catch (IOException ex) {  
  57.             Logger.getLogger(MySocketClient.class.getName()).log(Level.SEVERE,  
  58.                     null, ex);  
  59.         }  
  60.  
  61.         ReadKeyBoard rkb = new ReadKeyBoard();  
  62.         new Thread(rkb).start();  
  63.         while (running) {  
  64.             try {  
  65.  
  66.                 ByteBuffer buffer = ByteBuffer.allocate(1024);  
  67.                 buffer.clear();  
  68.  
  69.                 StringBuffer sb = new StringBuffer();  
  70.                 Thread.sleep(500);  
  71.  
  72.                 while ((num = sc.read(buffer)) > 0) {  
  73.                     sb.append(new String(buffer.array(), 0, num));  
  74.                     buffer.clear();  
  75.                 }  
  76.                 if (sb.length() > 0)  
  77.                     System.out.println(sb.toString());  
  78.                 if (sb.toString().toLowerCase().trim().equals("bye")) {  
  79.                     System.out.println("closed....");  
  80.  
  81.                     sc.close();  
  82.                     sc.socket().close();  
  83.                     rkb.close();  
  84.                     running = false;  
  85.                 }  
  86.             } catch (InterruptedException ex) {  
  87.                 Logger.getLogger(MySocketClient.class.getName()).log(  
  88.                         Level.SEVERE, null, ex);  
  89.             } catch (IOException ex) {  
  90.                 Logger.getLogger(MySocketClient.class.getName()).log(  
  91.                         Level.SEVERE, null, ex);  
  92.             }  
  93.         }  
  94.  
  95.     }  
  96.  
  97.     public void run() {  
  98.         init();  
  99.         execute();  
  100.     }  
  101.  
  102.     class ReadKeyBoard implements Runnable {  
  103.  
  104.         boolean running2 = true;  
  105.  
  106.         public ReadKeyBoard() {  
  107.  
  108.         }  
  109.  
  110.         public void close() {  
  111.             running2 = false;  
  112.         }  
  113.  
  114.         public void run() {  
  115.             BufferedReader reader = new BufferedReader(new InputStreamReader(  
  116.                     System.in));  
  117.             while (running2) {  
  118.                 try {  
  119.                     System.out.println("enter some commands:");  
  120.                     String str = reader.readLine();  
  121.                     sc.write(ByteBuffer.wrap(str.getBytes()));  
  122.  
  123.                 } catch (IOException ex) {  
  124.                     Logger.getLogger(ReadKeyBoard.class.getName()).log(  
  125.                             Level.SEVERE, null, ex);  
  126.                 }  
  127.             }  
  128.  
  129.         }  
  130.  
  131.     }  

原文鏈接:http://gcguchao8888-sina-com.iteye.com/blog/839021

【編輯推薦】

  1. 多線程NIO客戶端實例
  2. 用nio實現Echo服務
  3. Java NIO 深入研究
  4. Java NIO聊天窗口實例
  5. Java NIO 經典實例代碼
責任編輯:林師授 來源: 谷超的博客
相關推薦

2023-02-10 08:16:48

WebSocket簡易聊天室

2022-07-26 14:53:10

WebSocket網絡通信協議

2011-12-15 10:19:55

JavaNIO

2015-07-06 10:42:18

PHP聊天室應用

2021-11-16 09:38:10

鴻蒙HarmonyOS應用

2024-10-07 10:45:12

2023-01-05 09:17:58

2023-01-13 00:02:41

2025-05-09 08:35:00

聊天室FastAPIWebSocket

2022-11-14 08:01:48

2011-06-09 15:44:29

Spring

2022-12-01 08:25:23

eTsTCP聊天室

2011-12-15 11:19:08

JavaNIO

2021-10-14 18:46:29

Websocket瀏覽器API

2015-08-06 17:17:33

swoole聊天室

2022-04-18 10:36:48

社交軟件聊天平臺rocket.cha

2021-12-09 16:48:25

鴻蒙HarmonyOS應用

2024-01-18 11:15:46

Pythonsocket聊天室

2021-02-06 23:26:25

聊天室開發WebSocket
點贊
收藏

51CTO技術棧公眾號

成人日韩欧美| 日本熟女毛茸茸| 综合中文字幕| 精品福利一区二区| 水蜜桃亚洲精品| av一级黄色片| 性久久久久久| 丝袜亚洲另类欧美重口| 日本wwwxx| 欧美一级大片| 怡红院av一区二区三区| 精品一区二区国产| 国产男女无套免费网站| 亚洲免费大片| 久久九九免费视频| 爱爱免费小视频| 国产精品久久久久久av公交车| 亚洲mv在线观看| 最新精品视频| 国产小视频在线| 高清久久久久久| 国产精品男人的天堂| 日韩大片免费在线观看| 99久久综合狠狠综合久久aⅴ| 亚洲精品久久久久中文字幕二区 | 日韩精品成人一区二区三区| 久久久国产精品视频| 一本色道久久综合亚洲精品图片 | 欧美二区视频| 亚洲欧美中文日韩在线| 欧美性受xxxx黒人xyx性爽| 午夜不卡影院| 亚洲男人都懂的| 欧美日韩在线观看一区| 亚洲AV无码国产精品午夜字幕| 日本不卡在线视频| 久久久久久国产| 欧美日韩国产一二三区| 亚洲区小说区| 日韩欧美一区电影| 五月婷婷狠狠操| 波多野在线观看| 亚洲女同ⅹxx女同tv| 精品综合在线| 亚洲欧美另类视频| 久久99九九99精品| 国产精品福利片| 日韩三级视频在线| 欧美精品综合| 久久精品久久久久久| 男人天堂av电影| 国产精品一级在线观看| 精品1区2区3区| 日本精品一区二区三区四区| 国产理论电影在线| 一区二区三区在线播放| 看一级黄色录像| 97电影在线| 国产亚洲自拍一区| 欧美日韩亚洲一区二区三区在线观看 | 经典三级一区二区| 天天影视色香欲综合网老头| 天天做天天躁天天躁| 男人资源在线播放| 国产精品欧美一区喷水| 日本亚洲自拍| 日本一级在线观看| 91亚洲精品一区二区乱码| 国产成人精品自拍| 丰满熟女一区二区三区| 国产aⅴ综合色| 成人3d动漫一区二区三区91| 国产毛片毛片毛片毛片毛片| 久久国产乱子精品免费女| 国产精品678| 一区二区三区麻豆| 奇米精品一区二区三区四区| 国产精品国内视频| 波多野结衣二区三区| 久久青草久久| 国产精品久久久久久婷婷天堂| 黄色片视频免费| 日韩精品一二三四| 国产欧美精品日韩| 国产女主播福利| 久久国产精品露脸对白| 国产乱人伦真实精品视频| 艳妇乳肉豪妇荡乳av无码福利 | 日韩理论片网站| ijzzijzzij亚洲大全| 午夜小视频在线观看| 亚洲一区欧美一区| 亚洲自偷自拍熟女另类| 成人精品电影在线| 在线不卡中文字幕播放| 亚洲精品鲁一鲁一区二区三区 | 91精品国产丝袜白色高跟鞋| 欧美图片自拍偷拍| 天堂俺去俺来也www久久婷婷| 亚洲欧美综合v| 精品视频第一页| 国产精品vip| 欧美综合一区第一页| 在线观看国产一区二区三区| 国产传媒日韩欧美成人| 国产欧美欧洲| shkd中文字幕久久在线观看| 亚洲人吸女人奶水| 国产精品沙发午睡系列| 欧美a视频在线| 精品美女在线播放| 久久久久麻豆v国产精华液好用吗| 久久99视频| 久久九九免费视频| 亚洲免费在线视频观看| 韩日av一区二区| 国内成+人亚洲| 成人亚洲性情网站www在线观看| 亚洲精品亚洲人成人网 | 在线日韩av| 国产精品视频精品| 人妻偷人精品一区二区三区| 日本一区二区视频在线| 永久免费看av| 欧美日韩美女| 欧美xxx久久| 俄罗斯毛片基地| 99av国产精品欲麻豆| 成人啪啪免费看| 国产专区在线| 午夜伦理一区二区| 天天做天天干天天操| ccyy激情综合| 久久精品久久久久| 日本一区二区三区久久| www.久久精品| 久久久99精品视频| 亚洲二区av| 在线日韩日本国产亚洲| 久草国产精品视频| 国产成人aaa| 影音先锋欧美资源| 深夜日韩欧美| 日韩在线视频观看正片免费网站| 伊人久久久久久久久久久久 | 毛片免费在线| 亚洲综合久久av| 人人爽人人爽av| 日韩国产一区| 国产精品h片在线播放| 完全免费av在线播放| 久久av一区二区| 羞羞电影在线观看www| 欧美日韩一级片在线观看| 泷泽萝拉在线播放| 国产视频亚洲| 精品国产乱码久久久久久88av | 亚洲日本乱码在线观看| 久热在线视频观看| 91欧美在线| 国产精品久久久久久av福利软件| 欧美婷婷久久五月精品三区| 午夜精品福利一区二区三区av| 99re久久精品国产| av不卡在线| 日韩三级电影| 99久久99九九99九九九| 久久精品人人爽| 在线观看国产一区二区三区| 亚洲乱码国产乱码精品精可以看| 又色又爽又黄视频| 国产精品激情| 国产精品视频免费一区二区三区| 成人在线免费观看黄色| 欧美videofree性高清杂交| 久久久久香蕉视频| 成人av网站在线观看免费| 国产一二三在线视频| 欧亚精品一区| 国产一区二区不卡在线| 成人免费观看网站| 国产高潮在线| 亚洲美女在线视频| 欧美成人精品网站| 亚洲人成网站在线| 日本中文字幕在线不卡| 亚洲精品国产首次亮相| 99精品国产高清一区二区| 麻豆av在线免费观看| 亚洲国产日韩欧美综合久久 | 国产美女www爽爽爽视频| 一区二区三区欧美久久| 水蜜桃av无码| 日韩国产高清影视| 黄色www在线观看| www.豆豆成人网.com| 国产成人av在线播放| 91在线看片| 日韩欧美国产综合| 亚洲精品中文字幕乱码三区91| 国产色综合一区| 日日夜夜精品视频免费观看| 夜夜嗨av一区二区三区网站四季av| 欧美一区二区视频17c| 成人免费视频观看| 欧美精品中文字幕一区| 青青草手机在线| 欧美色视频一区| 免看一级a毛片一片成人不卡| 91香蕉视频在线| 亚洲美女性囗交| 亚洲高清在线| 三级三级久久三级久久18| 亚洲精品黑牛一区二区三区| 日本91av在线播放| 超碰在线免费公开| 国产丝袜一区视频在线观看| 91极品身材尤物theporn| 午夜视频一区二区| 在线看的片片片免费| 成人免费高清视频| 在线能看的av网站| 欧美专区在线| 麻豆av一区二区| heyzo欧美激情| 欧洲色大大久久| 91社在线播放| 日韩一区免费| 国产精品一区二区久久精品| 91桃色在线观看| 久久精品99久久久香蕉| 日韩精品视频无播放器在线看 | 国产一区二区视频网站| 亚洲永久免费视频| 伊人久久久久久久久久久久久久| www久久精品| 337p日本欧洲亚洲大胆张筱雨| 日韩高清不卡一区二区三区| 波多野结衣综合网| 欧美在线免费| 在线成人性视频| 国产一区二区三区91| 黄色小网站91| 亚洲日本va中文字幕| 国产日韩欧美在线视频观看| 日本高清不卡一区二区三区视频| 97视频com| 久久亚洲资源| 欧美日韩成人网| 超碰在线网址| 久久精品国产精品亚洲| 国产高清在线看| 亚洲片av在线| 日韩av视屏| 国产丝袜一区二区三区免费视频| 天堂在线资源网| 亚洲成在人线av| www.天堂av.com| 日韩精品最新网址| 国产激情视频在线播放| 欧美人妖巨大在线| 国产精品久久欧美久久一区| 欧美日韩日日骚| 中文字幕在线日亚洲9| 欧美亚洲禁片免费| 在线免费a视频| 欧美精品乱码久久久久久| 亚洲天堂中文在线| 7777精品伊人久久久大香线蕉完整版 | 奇米777国产一区国产二区| 国产一区二区高清不卡| 欧美男男freegayvideosroom| 精品视频在线观看| 五月天亚洲一区| 六十路精品视频| 国产真实有声精品录音| 亚洲春色在线| 婷婷丁香综合| 成人av在线不卡| 日韩视频免费| 高清在线观看免费| 日韩精品福利网| 不卡的av中文字幕| 国产一区二区调教| 中国特级黄色大片| 91日韩一区二区三区| 日本成人免费视频| 综合久久给合久久狠狠狠97色| 国产日产精品一区二区三区的介绍| 亚洲情趣在线观看| 久久久久久久99| 在线看日韩精品电影| 一区二区三区黄| 精品91自产拍在线观看一区| 秋霞欧美在线观看| 中文字幕欧美在线| 免费男女羞羞的视频网站在线观看| 久久久亚洲国产天美传媒修理工| 亚洲欧洲美洲av| 亚洲一区二区三区乱码aⅴ蜜桃女 亚洲一区二区三区乱码aⅴ | 欧美—级a级欧美特级ar全黄| 亚洲一区站长工具| 成人免费网站在线看| 精品资源在线| 亚洲欧洲日韩精品| 亚洲性视频h| 亚洲综合色在线观看| 成人精品免费网站| 林心如三级全黄裸体| 亚洲国产成人va在线观看天堂 | 日本高清无吗v一区| 国产精品视频一区二区三区,| 精品成人免费观看| 最新97超碰在线| 午夜精品久久17c| 欧美男女视频| 九色91在线视频| 91精品国产乱码久久久久久| 亚洲不卡中文字幕无码| 蜜桃av噜噜一区二区三区小说| 4438x全国最大成人| 国产午夜精品在线观看| 久久久久香蕉视频| 欧美日韩高清一区二区不卡 | 亚洲人a成www在线影院| 污视频在线免费观看网站| 日本欧美中文字幕| 哺乳一区二区三区中文视频| 亚洲午夜精品福利| 香蕉久久国产| 男女性杂交内射妇女bbwxz| 国产精品久久久久9999吃药| 日韩免费视频一区二区视频在线观看| 91麻豆精品国产91久久久| 五月天久久久久久| 中文字幕一区二区三区电影| 都市激情综合| 国产欧美日韩伦理| 欧美日韩影院| 激情成人在线观看| 国产精品福利一区二区| 国产免费一区二区三区四区五区| 亚洲第一精品夜夜躁人人爽| 成人av黄色| 成人做爽爽免费视频| 欧美一区二区三| 成年人网站大全| 久久久三级国产网站| 草视频在线观看| 欧美一级高清片| 91蜜桃在线视频| 91久久中文字幕| 99热国内精品| 黄色一级片免费的| 中文字幕五月欧美| 亚洲天堂手机在线| 搡老女人一区二区三区视频tv| 成人日韩av| 亚洲日本精品一区| 久久国产免费看| 日韩在线观看免| 欧美性色综合网| 快射视频在线观看| 亚洲一区国产精品| 国产综合自拍| 亚洲一区二区三区四区av| 亚洲欧美日韩国产手机在线| 国产精品欧美亚洲| 成人97在线观看视频| 日本免费一区二区三区视频| 人妻激情另类乱人伦人妻| 成人午夜精品在线| 日韩精品久久久久久久酒店| 亚洲激情小视频| 免费福利视频一区二区三区| 欧美一区二区三区四区在线观看地址 | 国产一区白浆| 自拍偷拍中文字幕| 欧美在线一区二区三区| 91视频在线观看| 亚洲精品欧美一区二区三区| 亚洲欧美色图| 亚洲国产第一区| 在线精品观看国产| 国产成人在线视频免费观看| 成人欧美视频在线| 久久久777| 91视频最新网址| 欧美电影免费观看完整版| 毛片电影在线| 亚洲欧洲日韩综合二区| 国产精品1区2区| 久久久久久在线观看| 一本色道久久88综合日韩精品| crdy在线观看欧美| 免费看黄在线看| 国产蜜臀97一区二区三区| 亚洲AV无码一区二区三区少妇| 97av视频在线| 久久中文字幕二区|