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

Apache MINA實(shí)戰(zhàn)之牛刀小試

開發(fā) 后端
Apache的MINA是一個(gè)被用來(lái)構(gòu)建高性能和高可伸縮性應(yīng)用程序的網(wǎng)絡(luò)應(yīng)用框架,它提供了一套統(tǒng)一的建立在Java NIO之上的事件驅(qū)動(dòng)的異步API。

Apache的MINA是一個(gè)被用來(lái)構(gòu)建高性能和高可伸縮性應(yīng)用程序的網(wǎng)絡(luò)應(yīng)用框架,它提供了一套統(tǒng)一的建立在Java NIO之上的事件驅(qū)動(dòng)的異步API。

對(duì)于MINA框架的了解,MINA官方的幾篇文章是必須要看的,如下:

* Application Architecture http://mina.apache.org/mina-based-application-architecture.html

* Server Architecture http://mina.apache.org/server-architecture.html

* Client Architecture http://mina.apache.org/client-architecture.html

其中幾個(gè)主要的組件如下:

I/O Service - 用來(lái)處理I/O流,對(duì)于Server端就是IOAcceptor的實(shí)現(xiàn)類接受Client端的連接請(qǐng)求,對(duì)于Client端就是IoConnector的實(shí)現(xiàn)類來(lái)建立到Server端的連接。

I/O Filter Chain - 用來(lái)過(guò)濾或轉(zhuǎn)化數(shù)據(jù)。對(duì)于Server端和Client端來(lái)說(shuō)都是IoFilter接口的實(shí)現(xiàn)類,MINA自己內(nèi)建了很多IoFilter接口的實(shí)現(xiàn)類。具體可以參考官方文檔。

I/O Handler - 用來(lái)處理真正業(yè)務(wù)邏輯的類。對(duì)于Server端和Client端來(lái)說(shuō)都是IoHandler接口的實(shí)現(xiàn)類,通常來(lái)說(shuō)需要自己編寫。

由于Server端和Client端都是基于以上三個(gè)組件的,因此對(duì)于Server端和Client端編程來(lái)說(shuō)就都有類似的代碼結(jié)構(gòu)。

對(duì)于Server端來(lái)說(shuō):

1. 創(chuàng)建I/O service - 這里就是創(chuàng)建IOAcceptor類監(jiān)聽端口。

2. 創(chuàng)建I/O Filter Chain - 這里就是告訴使用那些IoFilter。

3. 創(chuàng)建I/O Handler - 自己的業(yè)務(wù)邏輯。

對(duì)于Client端來(lái)說(shuō):

1. 創(chuàng)建I/O service - 這里就是創(chuàng)建IOConnector類來(lái)建立到Server端的連接。

2. 創(chuàng)建I/O Filter Chain - 這里就是告訴使用那些IoFilter。

3. 創(chuàng)建I/O Handler - 自己的業(yè)務(wù)邏輯。

下面來(lái)通過(guò)一個(gè)例子看看MINA是怎樣工作的。由于大多數(shù)應(yīng)用都是基于TCP/IP的應(yīng)用,所以這里也就不再說(shuō)UDP/IP了。

這里我使用了Maven來(lái)創(chuàng)建了一個(gè)簡(jiǎn)單java應(yīng)用程序,具體步驟請(qǐng)參Maven的官方手冊(cè)。這里只是將我用到的maven配置文件pom.xml列出,方便下面及后續(xù)文章使用。具體pom.xml文件內(nèi)容如下:

  1. <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
  2.     xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">  
  3.     <modelVersion>4.0.0</modelVersion>  
  4.     <groupId>com.google.code.garbagecan.minastudy</groupId>  
  5.     <artifactId>minastudy</artifactId>  
  6.     <packaging>jar</packaging>  
  7.     <version>1.0-SNAPSHOT</version>  
  8.     <name>minastudy</name>  
  9.     <url>http://maven.apache.org</url>  
  10.     <dependencies>  
  11.         <dependency>  
  12.             <groupId>org.apache.mina</groupId>  
  13.             <artifactId>mina-core</artifactId>  
  14.             <version>2.0.4</version>  
  15.         </dependency>  
  16.         <dependency>  
  17.             <groupId>org.apache.mina</groupId>  
  18.             <artifactId>mina-filter-compression</artifactId>  
  19.             <version>2.0.4</version>  
  20.         </dependency>  
  21.         <dependency>  
  22.             <groupId>org.slf4j</groupId>  
  23.             <artifactId>slf4j-api</artifactId>  
  24.             <version>1.3.0</version>  
  25.         </dependency>  
  26.         <dependency>  
  27.             <groupId>org.slf4j</groupId>  
  28.             <artifactId>slf4j-log4j12</artifactId>  
  29.             <version>1.3.0</version>  
  30.         </dependency>  
  31.     </dependencies>  
  32. </project> 

首先來(lái)看Server端的代碼

  1. package com.google.code.garbagecan.minastudy.sample1;  
  2.  
  3. import java.io.IOException;  
  4. import java.net.InetSocketAddress;  
  5. import java.nio.charset.Charset;  
  6.  
  7. import org.apache.mina.core.service.IoAcceptor;  
  8. import org.apache.mina.core.service.IoHandlerAdapter;  
  9. import org.apache.mina.core.session.IdleStatus;  
  10. import org.apache.mina.core.session.IoSession;  
  11. import org.apache.mina.filter.codec.ProtocolCodecFilter;  
  12. import org.apache.mina.filter.codec.textline.TextLineCodecFactory;  
  13. import org.apache.mina.filter.logging.LoggingFilter;  
  14. import org.apache.mina.transport.socket.nio.NioSocketAcceptor;  
  15. import org.slf4j.Logger;  
  16. import org.slf4j.LoggerFactory;  
  17.  
  18. public class MyServer {  
  19.       
  20.     private static final Logger logger = LoggerFactory.getLogger(MyServer.class);  
  21.       
  22.     public static void main(String[] args) {  
  23.         IoAcceptor acceptor = new NioSocketAcceptor();  
  24.  
  25.         acceptor.getFilterChain().addLast("logger"new LoggingFilter());  
  26.         acceptor.getFilterChain().addLast("codec"new ProtocolCodecFilter(new TextLineCodecFactory(Charset.forName("UTF-8"))));  
  27.  
  28.         acceptor.setHandler(new IoHandlerAdapter() {  
  29.               
  30.             @Override 
  31.             public void sessionCreated(IoSession session) throws Exception {  
  32.             }  
  33.               
  34.             @Override 
  35.             public void sessionOpened(IoSession session) throws Exception {  
  36.             }  
  37.  
  38.             @Override 
  39.             public void sessionClosed(IoSession session) throws Exception {  
  40.             }  
  41.  
  42.             @Override 
  43.             public void sessionIdle(IoSession session, IdleStatus status) throws Exception {  
  44.             }  
  45.  
  46.             @Override 
  47.             public void exceptionCaught(IoSession session, Throwable cause) throws Exception {  
  48.                 logger.error(cause.getMessage(), cause);  
  49.                 session.close(true);  
  50.             }  
  51.  
  52.             @Override 
  53.             public void messageReceived(IoSession session, Object message) throws Exception {  
  54.                 logger.info("Received message " + message);  
  55.                 session.write(message);  
  56.             }  
  57.  
  58.             @Override 
  59.             public void messageSent(IoSession session, Object message) throws Exception {  
  60.                 logger.info("Sent message " + message);  
  61.             }  
  62.         });  
  63.           
  64.         try {  
  65.             acceptor.bind(new InetSocketAddress(10000));  
  66.         } catch (IOException ex) {  
  67.             logger.error(ex.getMessage(), ex);  
  68.         }  
  69.     }  

1. 首先創(chuàng)建I/O Service,這里使用的是NioSocketAcceptor類來(lái)創(chuàng)建了一個(gè)IoAcceptor實(shí)例。

2. 創(chuàng)建I/O Filter Chain,這里使用了兩個(gè)IoFilter,一個(gè)是LoggingFilter用來(lái)記錄日志和打印事件消息,另一個(gè)是ProtocolCodecFilter實(shí)例用來(lái)編碼數(shù)據(jù),這里其實(shí)就是將傳遞的數(shù)據(jù)編碼成文本。

3. 創(chuàng)建I/O Handler,不要害怕,看起來(lái)代碼多,其實(shí)就是一個(gè)實(shí)現(xiàn)了IoHandler接口的子類,自己需要實(shí)現(xiàn)其中的一些方法,這里方法比較多,但是我在這里只實(shí)現(xiàn)了messageSent,messageReceived和exceptionCaught方法。

4. ***就是讓IoAcceptor類實(shí)例綁定端口實(shí)現(xiàn)監(jiān)聽。

#p#

下面看看Client端的代碼

  1. package com.google.code.garbagecan.minastudy.sample1;  
  2.  
  3. import java.net.InetSocketAddress;  
  4. import java.nio.charset.Charset;  
  5.  
  6. import org.apache.mina.core.RuntimeIoException;  
  7. import org.apache.mina.core.future.ConnectFuture;  
  8. import org.apache.mina.core.service.IoConnector;  
  9. import org.apache.mina.core.service.IoHandlerAdapter;  
  10. import org.apache.mina.core.session.IdleStatus;  
  11. import org.apache.mina.core.session.IoSession;  
  12. import org.apache.mina.filter.codec.ProtocolCodecFilter;  
  13. import org.apache.mina.filter.codec.textline.TextLineCodecFactory;  
  14. import org.apache.mina.filter.logging.LoggingFilter;  
  15. import org.apache.mina.transport.socket.nio.NioSocketConnector;  
  16. import org.slf4j.Logger;  
  17. import org.slf4j.LoggerFactory;  
  18.  
  19. public class MyClient {  
  20.       
  21.     private static final Logger logger = LoggerFactory.getLogger(MyClient.class);  
  22.       
  23.     public static void main(String[] args) {  
  24.         IoConnector connector = new NioSocketConnector();  
  25.         connector.setConnectTimeoutMillis(10 * 1000);  
  26.           
  27.         connector.getFilterChain().addLast("logger"new LoggingFilter());  
  28.         connector.getFilterChain().addLast("codec"new ProtocolCodecFilter(new TextLineCodecFactory(Charset.forName("UTF-8"))));  
  29.           
  30.         connector.setHandler(new IoHandlerAdapter() {  
  31.               
  32.             @Override 
  33.             public void sessionCreated(IoSession session) throws Exception {  
  34.             }  
  35.  
  36.             @Override 
  37.             public void sessionOpened(IoSession session) throws Exception {  
  38.                 for (int i = 0; i < 10; i++) {  
  39.                     session.write("Hello user_" + i);  
  40.                 }  
  41.                 session.write("Bye");  
  42.             }  
  43.  
  44.             @Override 
  45.             public void sessionClosed(IoSession session) throws Exception {  
  46.             }  
  47.  
  48.             @Override 
  49.             public void sessionIdle(IoSession session, IdleStatus status) throws Exception {  
  50.             }  
  51.  
  52.             @Override 
  53.             public void exceptionCaught(IoSession session, Throwable cause) throws Exception {  
  54.                 logger.error(cause.getMessage(), cause);  
  55.                 session.close(true);  
  56.             }  
  57.  
  58.             @Override 
  59.             public void messageReceived(IoSession session, Object message) throws Exception {  
  60.                 logger.info("Received message " + message);  
  61.                 if (message.toString().equalsIgnoreCase("Bye")) {  
  62.                     session.close(true);  
  63.                 }  
  64.             }  
  65.  
  66.             @Override 
  67.             public void messageSent(IoSession session, Object message) throws Exception {  
  68.                 logger.info("Sent message " + message);  
  69.             }  
  70.         });  
  71.  
  72.         IoSession session = null;  
  73.         try {  
  74.             ConnectFuture future = connector.connect(new InetSocketAddress("localhost"10000));  
  75.             future.awaitUninterruptibly();  
  76.             session = future.getSession();  
  77.         } catch (RuntimeIoException e) {  
  78.             logger.error(e.getMessage(), e);  
  79.         }  
  80.  
  81.         session.getCloseFuture().awaitUninterruptibly();  
  82.         connector.dispose();  
  83.     }  

1. 首先創(chuàng)建I/O Service,這里使用的是NioSocketConnector類來(lái)創(chuàng)建了一個(gè)IoConnector實(shí)例,并設(shè)置連接超時(shí)為10秒。

2. 創(chuàng)建I/O Filter Chain,和服務(wù)器端同樣設(shè)置了兩個(gè)IoFilter,一個(gè)是LoggingFilter用來(lái)記錄日志和打印事件消息,另一個(gè)是ProtocolCodecFilter實(shí)例用來(lái)編碼數(shù)據(jù),這里其實(shí)就是將傳遞的數(shù)據(jù)編碼成文本。

3. 創(chuàng)建I/O Handler,也不要害怕,看起來(lái)代碼多,其實(shí)也是一個(gè)實(shí)現(xiàn)了IoHandler接口的子類,并且自己實(shí)現(xiàn)了sessionOpened,messageSent,messageReceived和exceptionCaught方法。實(shí)現(xiàn)sessionOpened方法是為了在建立連接后向Server端發(fā)送消息。另外看一下messageReceived方法實(shí)現(xiàn),在接收到服務(wù)器端的消息后關(guān)閉會(huì)話。從而可以使Client程序最終能夠退出。

4. ***就是IoConnector實(shí)例類連接遠(yuǎn)端的Server。

下面測(cè)試一下上面的程序,首先運(yùn)行MyServer類,然后運(yùn)行MyClient類,就可以分別在各自的終端上看到事件日志以及發(fā)送/接收的消息了。

原文鏈接:http://blog.csdn.net/kongxx/article/details/7520259

【編輯推薦】

  1. Java程序設(shè)計(jì):圖形與多媒體處理
  2. Java集合框架總結(jié):TreeSet類的排序問(wèn)題
  3. 詳解Java類的生命周期
  4. Java理論與實(shí)踐: Web層的狀態(tài)復(fù)制
  5. Java Excel API及詳細(xì)教程
責(zé)任編輯:林師授 來(lái)源: kongxx的博客
相關(guān)推薦

2014-06-06 13:42:26

iOS 8QR CodeWWDC2014

2021-03-08 08:21:19

詞云數(shù)據(jù)可視化大數(shù)據(jù)

2010-03-05 17:25:07

sharepoint

2011-11-30 16:02:13

筆記本評(píng)測(cè)

2012-05-03 10:55:51

ApacheMINAJava

2017-04-11 20:49:02

機(jī)器學(xué)習(xí)大數(shù)據(jù)數(shù)據(jù)分析

2022-07-04 23:24:28

sql優(yōu)化監(jiān)控

2014-12-16 15:10:32

APC BR1000G后備式UPS電源

2021-01-08 09:07:19

Scrapy框架爬蟲

2017-05-04 21:15:30

Android分辨率

2012-02-24 10:48:56

語(yǔ)盒開源

2021-05-20 07:56:35

Bean容器Spring

2023-10-07 08:59:02

2009-12-09 10:34:13

ibmdwJavaApache

2018-01-01 23:02:56

2016-09-28 18:10:59

微信程序MINA

2012-05-03 11:51:59

ApacheCXFJava

2012-05-03 11:43:32

ApacheCXFRESTful

2022-10-24 00:26:51

大數(shù)據(jù)Hadoop存儲(chǔ)層
點(diǎn)贊
收藏

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

欧美高清性hdvideosex| 中文字幕不卡在线观看| 97精品国产97久久久久久免费| 中文字幕在线视频播放| 欧美一区久久久| 中文字幕亚洲一区二区av在线| 999日本视频| 国产一级免费视频| 亚洲91中文字幕无线码三区| 亚洲第一级黄色片| 欧美激情精品久久久久久小说| 91激情在线| 成人av片在线观看| 91精品国产综合久久香蕉最新版| 国产一级特黄视频| 日韩免费高清| 亚洲大尺度美女在线| 中文字幕第38页| 日本不卡网站| 亚洲男女毛片无遮挡| 欧美中日韩一区二区三区| 97人妻一区二区精品免费视频| 亚洲日本欧美| 麻豆乱码国产一区二区三区 | 国产亚洲美女精品久久久| 91av免费观看| 亚洲欧美在线人成swag| 色天天综合久久久久综合片| 国产成人在线小视频| 日本三级在线视频| 国产欧美一区在线| 久久99精品久久久久久久青青日本| 在线免费看av的网站| 裸体一区二区| 91wwwcom在线观看| 日韩大片免费在线观看| 午夜精品久久| 精品国产一区二区三区在线观看 | 成人精品一区二区三区| 在线观看日本网站| 国产精品久久久久久久免费软件| 美女黄色丝袜一区| 国产破处视频在线观看| 国产一区国产二区国产三区| 日韩电影在线观看中文字幕| 国产ts在线观看| 在线播放一区二区精品视频| 欧美精品乱人伦久久久久久| 欧美第一页浮力影院| 日本成人片在线| 日本乱人伦aⅴ精品| 尤物av无码色av无码| av资源中文在线| 天天影视涩香欲综合网| 丝袜人妻一区二区三区| 色av手机在线| 亚洲国产成人av好男人在线观看| 国产成人亚洲综合无码| 深夜国产在线播放| 亚洲亚洲人成综合网络| 亚洲国产成人精品无码区99| 成人观看网址| 欧美性videos高清精品| 91淫黄看大片| 国产精品天堂蜜av在线播放| 欧美欧美欧美欧美| 欧美性猛交xx| 久久精品国产亚洲5555| 国产视频综合在线| 女人十八毛片嫩草av| 欧美国产一级| 久久91超碰青草是什么| 精品无码人妻一区二区三| 99精品国产在热久久婷婷| 欧美亚洲伦理www| 婷婷激情五月综合| 国产综合久久久久久鬼色| 亚洲va男人天堂| 蜜桃av中文字幕| 久久日一线二线三线suv| 日韩三级电影| 肉体视频在线| 日韩欧美在线播放| 三日本三级少妇三级99| 国产成人福利av| 亚洲欧美精品一区| 国精品人伦一区二区三区蜜桃| 欧美1区2区3区| 欧美一级淫片丝袜脚交| 中文字幕乱码人妻无码久久| 国产伦精品一区二区三区免费| 国产精品免费在线播放| 成年人视频在线观看免费| 亚洲女同女同女同女同女同69| 欧美又粗又长又爽做受| 三级成人黄色影院| 日韩美女在线视频| 日本少妇高潮喷水xxxxxxx| 一区二区三区四区电影| 欧美在线欧美在线| 国产精品嫩草影院桃色| 久久这里都是精品| 喜爱夜蒲2在线| 神马电影网我不卡| 精品盗摄一区二区三区| 亚洲精品成人av久久| 亚洲电影成人| 成人午夜两性视频| 日本中文字幕一区二区有码在线| 中文字幕一区二区三区色视频 | 亚洲国产黄色片| 蜜桃av.com| 久久久久久黄| 国产日韩欧美亚洲一区| 成年人网站在线| 在线观看日产精品| xxxx黄色片| 亚洲深深色噜噜狠狠爱网站| 国产成人一区二区| 日韩一区二区三区不卡| 亚洲精品国产第一综合99久久| 国产精品涩涩涩视频网站| 99a精品视频在线观看| 日韩一区二区欧美| 无码人妻丰满熟妇精品| 99精品欧美一区二区蜜桃免费| 国产精品波多野结衣| 香蕉成人影院| 亚洲欧美中文日韩在线| 日韩男人的天堂| 懂色av一区二区三区免费看| 一区二区精品在线观看| 精品网站在线| 亚洲人免费视频| 国产欧美日韩另类| 成人av网站在线观看免费| www.亚洲成人网| 秋霞影院一区| 欧美成人一区二区三区电影| 91国产免费视频| 国产精品天美传媒| 久热精品在线观看视频| 日韩伦理一区| 成人激情视频在线| 黄色国产网站在线播放| 7777精品伊人久久久大香线蕉最新版| 六月婷婷七月丁香| 丝瓜av网站精品一区二区| 欧美日韩综合另类| 午夜欧美巨大性欧美巨大| 亚洲色图18p| 成人免费视频国产免费| 欧美高清在线视频| 亚洲欧美手机在线| 国产精品国内免费一区二区三区| 国产日韩视频在线观看| 久草免费在线观看| 日韩亚洲欧美成人一区| 国产一级大片在线观看| 成人激情小说网站| 成年人观看网站| 精品国产一区探花在线观看| 97视频人免费观看| 欧美日韩伦理片| 在线观看成人免费视频| 波兰性xxxxx极品hd| 国内欧美视频一区二区| 日b视频免费观看| 日本妇女一区| 国产精品久久久久久久美男| 日本a在线播放| 欧美日本在线一区| 黄色一级视频在线观看| 99视频热这里只有精品免费| 欧美精品色婷婷五月综合| 欧美色女视频| av电影成人| 中文字幕资源网在线观看免费| 亚洲香蕉在线观看| 99国产精品久久久久99打野战| 亚洲自拍偷拍网站| 精品国产av无码| 国产精品一区二区久久精品爱涩| 久久这里只有精品18| 国产调教一区二区三区| 91久久精品国产91性色| 国产拍在线视频| 日日骚久久av| 免费观看黄色一级视频| 欧美综合一区二区| 福利所第一导航| 久久蜜桃av一区二区天堂| 国内自拍第二页| 性欧美精品高清| 日本黄色播放器| 日韩a级大片| 成人欧美一区二区三区在线| 黄色软件视频在线观看| 日韩一区二区欧美| 噜噜噜在线观看播放视频| 91精品国产色综合久久不卡电影| 国产又黄又粗又爽| 亚洲精品乱码久久久久久| 干b视频在线观看| 成人免费高清在线| 激情五月婷婷基地| 媚黑女一区二区| 97视频在线免费| 亚洲va在线| 日韩wuma| 老牛精品亚洲成av人片| 91一区二区三区| 国语自产精品视频在线看抢先版结局| 97视频在线免费观看| 中中文字幕av在线| 最近2019年好看中文字幕视频| 日本久久一级片| 欧美一区二区播放| 又骚又黄的视频| 欧美性猛交xxxx免费看久久久| 久久久久久久久久99| 中文字幕一区二区不卡 | 最新热久久免费视频| 免费观看av网站| 99久久99久久精品免费观看| 色哟哟在线观看视频| 久久国产乱子精品免费女| 大肉大捧一进一出好爽动态图| 伊人成年综合电影网| 日本一道在线观看| 99久久99久久精品国产片桃花| 日本不卡一区| 亚洲涩涩av| 久久精品中文字幕一区二区三区 | 日本高清一区| 亚州av一区| 久久精品日产第一区二区三区精品版 | 91caoporm在线视频| 亚洲夜晚福利在线观看| 欧美日韩在线中文字幕| 精品一区二区电影| 日本私人网站在线观看| 精品香蕉一区二区三区| 少妇精品高潮欲妇又嫩中文字幕| 日韩精品一区二区三区在线播放 | 自拍偷拍亚洲在线| 成人午夜电影在线观看| 一本色道久久综合亚洲精品小说| 国产在线一在线二| 中文字幕一区二区三区电影| 91在线视频| 日韩最新av在线| 超碰porn在线| 欧美华人在线视频| 爱搞国产精品| 日本精品久久中文字幕佐佐木| 大胆人体一区| 国产精品免费久久久久影院| 婷婷精品久久久久久久久久不卡| 成人免费淫片aa视频免费| 久久伊人久久| 国产成人精品免费视频大全最热| 福利电影一区| 欧美激情视频一区二区三区| 欧美偷拍自拍| 经典三级在线视频| 亚洲久久一区| 天天干在线影院| 国产一区高清在线| 老司机免费视频| 久久精品欧美日韩| 爱爱视频免费在线观看| 亚洲国产综合人成综合网站| 欧美日韩一二三四区| 欧美三级日韩三级| www.热久久| 亚洲欧美中文日韩v在线观看| 91精品大全| 国产综合在线视频| 久久天堂av| 国产精品一区二区三区在线观| 日韩深夜福利| 综合国产精品久久久| 欧美亚韩一区| 欧美精品aaaa| 国产aⅴ综合色| 中文字幕网站在线观看| 亚洲精品五月天| 老熟妇仑乱一区二区av| 欧美一区二区三区免费| 视频午夜在线| 美日韩精品视频免费看| av日韩亚洲| 成人av电影免费| av永久不卡| 国产精品无码人妻一区二区在线 | 国产日韩欧美日韩| 激情小说亚洲图片| 一区二区三区国| 亚洲综合精品| 国产乱国产乱老熟300部视频| 国产三级三级三级精品8ⅰ区| 国产亚洲成人av| 精品视频在线免费看| 天天射,天天干| 操91在线视频| 欧美色片在线观看| 久久青青草原一区二区| 欧美久久影院| 中文字幕第17页| 久久精品一区二区三区不卡牛牛| a级黄色片免费看| 欧美日韩亚洲综合在线| 三级毛片在线免费看| 久久99国产精品自在自在app| 日韩国产网站| 欧美日韩国产精品一区二区| 国模吧视频一区| 国产xxxxhd| 欧美国产精品一区| 中文字幕在线天堂| 亚洲精品福利资源站| 国产丝袜在线观看视频| 亚洲a区在线视频| 91亚洲国产| 日本高清久久久| 国产精品视频看| 波多野结衣在线电影| 亚洲久久久久久久久久久| 国产蜜臀在线| 国产a一区二区| 伊人影院久久| 亚洲精品第二页| 亚洲一区二区三区四区五区中文| 国产熟女一区二区三区四区| 色吧影院999| 亚洲三级在线| 樱花www成人免费视频| 美女www一区二区| 一本一本久久a久久| 欧美三级在线视频| 麻豆传媒视频在线| 亚洲va码欧洲m码| 亚洲先锋成人| 妖精视频一区二区| 亚洲国产一区二区在线播放| 亚洲av无码专区在线| 欧美精品国产精品日韩精品| 岛国精品一区| 成熟了的熟妇毛茸茸| 久久蜜桃av一区精品变态类天堂| 99久久久久久久久| 在线观看亚洲视频| 欧美日韩破处视频| 一区二区三区四区久久| 国产乱码字幕精品高清av | 亚洲私拍自拍| 朝桐光av一区二区三区| 狠狠久久五月精品中文字幕| 加勒比一区二区三区在线| 国产精品国产三级国产专播精品人 | 中文字幕在线观看一区二区三区| 久久精品国产亚洲一区二区三区| 精品无码一区二区三区蜜臀| 日韩一区二区在线播放| 91福利区在线观看| 美日韩精品免费| 蜜臀久久久久久久| 久久精品一级片| 日韩精品视频观看| 日韩av黄色| 免费国产黄色网址| 欧美极品少妇xxxxⅹ高跟鞋| 国产精品久久综合青草亚洲AV| 色综合视频一区中文字幕| 日韩欧美中文字幕电影| 亚洲另类第一页| 亚洲777理论| 99re在线视频| 国产精品一区二区免费| 日日摸夜夜添夜夜添精品视频| 青花影视在线观看免费高清| 337p日本欧洲亚洲大胆色噜噜| 色8久久影院午夜场| 中文字幕在线乱| 91丨九色porny丨蝌蚪| 艳妇乳肉豪妇荡乳av| 91国产中文字幕| 色中色综合网| av直播在线观看| 91精品国产一区二区人妖| 天堂中文在线播放| 2021狠狠干| 国产欧美一区视频| 日本黄色不卡视频| 91久久久精品| 天堂影院一区二区| 久久久久久久极品内射| 色播久久人人爽人人爽人人片视av| 国产另类在线|