日韩av黄I国产麻豆传媒I国产91av视频在线观看I日韩一区二区三区在线看I美女国产在线I麻豆视频国产在线观看I成人黄色短片

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

pushlet单播与多播

發布時間:2025/3/15 编程问答 39 豆豆
生活随笔 收集整理的這篇文章主要介紹了 pushlet单播与多播 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

? ?最近要弄一個消息推送的功能,在網上找了很多的關于pushlet的文章,雖然寫的都很詳細,但是本人看了以后卻總覺得是模棱兩可···不知道如何下手,最終參考了這些文章中的一些內容,并結合官網的源代碼,做了自己的修改。

?第一部分 ?修改的地方

首先修改了nl.justobjects.pushlet.core.Session,增加了even字段,增加了getEvent()方法,同時修改了create()方法,修改如下:

// Copyright (c) 2000 Just Objects B.V. <just@justobjects.nl> // Distributable under LGPL license. See terms of license at gnu.org.package nl.justobjects.pushlet.core;import nl.justobjects.pushlet.util.Log; import nl.justobjects.pushlet.util.PushletException;/*** Represents client pushlet session state.** @author Just van den Broecke - Just Objects &copy;* @version $Id: Session.java,v 1.8 2007/11/23 14:33:07 justb Exp $*/ public class Session implements Protocol, ConfigDefs {private Controller controller;private Subscriber subscriber;/** 增加了even字段 */private Event event;private String userAgent;private long LEASE_TIME_MILLIS = Config.getLongProperty(SESSION_TIMEOUT_MINS) * 60 * 1000;private volatile long timeToLive = LEASE_TIME_MILLIS;public static String[] FORCED_PULL_AGENTS = Config.getProperty(LISTEN_FORCE_PULL_AGENTS).split(",");private String address = "unknown";private String format = FORMAT_XML;private String id;/*** Protected constructor as we create through factory method.*/protected Session() {}/*** Create instance through factory method.** @param anId* a session id* @return a Session object (or derived)* @throws PushletException* exception, usually misconfiguration*//** 修改前的create方法 */// public static Session create(String anId) throws PushletException {// Session session;// try {// session = (Session) Config.getClass(SESSION_CLASS,// "nl.justobjects.pushlet.core.Session").newInstance();// } catch (Throwable t) {// throw new PushletException(// "Cannot instantiate Session from config", t);// }//// // Init session// session.id = anId;// session.controller = Controller.create(session);// session.subscriber = Subscriber.create(session);// return session;// }public static Session create(String anId, Event anEvent)throws PushletException {Session session;try {session = (Session) Config.getClass(SESSION_CLASS,"nl.justobjects.pushlet.core.Session").newInstance();} catch (Throwable t) {throw new PushletException("Cannot instantiate Session from config", t);}// Init sessionsession.id = anId;session.controller = Controller.create(session);session.subscriber = Subscriber.create(session);session.event = anEvent;return session;}/*** 增加了getEVent方法*/public Event getEvent() {return event;}/*** Return (remote) Subscriber client's IP address.*/public String getAddress() {return address;}/*** Return command controller.*/public Controller getController() {return controller;}/*** Return Event format to send to client.*/public String getFormat() {return format;}/*** Return (remote) Subscriber client's unique id.*/public String getId() {return id;}/*** Return subscriber.*/public Subscriber getSubscriber() {return subscriber;}/*** Return remote HTTP User-Agent.*/public String getUserAgent() {return userAgent;}/*** Set address.*/protected void setAddress(String anAddress) {address = anAddress;}/*** Set event format to encode.*/protected void setFormat(String aFormat) {format = aFormat;}/*** Set client HTTP UserAgent.*/public void setUserAgent(String aUserAgent) {userAgent = aUserAgent;}/*** Decrease time to live.*/public void age(long aDeltaMillis) {timeToLive -= aDeltaMillis;}/*** Has session timed out?*/public boolean isExpired() {return timeToLive <= 0;}/*** Keep alive by resetting TTL.*/public void kick() {timeToLive = LEASE_TIME_MILLIS;}public void start() {SessionManager.getInstance().addSession(this);}public void stop() {subscriber.stop();SessionManager.getInstance().removeSession(this);}/*** Info.*/public void info(String s) {Log.info("S-" + this + ": " + s);}/*** Exceptional print util.*/public void warn(String s) {Log.warn("S-" + this + ": " + s);}/*** Exceptional print util.*/public void debug(String s) {Log.debug("S-" + this + ": " + s);}public String toString() {return getAddress() + "[" + getId() + "]";} }/** $Log: Session.java,v $ Revision 1.8 2007/11/23 14:33:07 justb core classes* now configurable through factory* * Revision 1.7 2005/02/28 15:58:05 justb added SimpleListener example* * Revision 1.6 2005/02/28 12:45:59 justb introduced Command class* * Revision 1.5 2005/02/28 09:14:55 justb sessmgr/dispatcher factory/singleton* support* * Revision 1.4 2005/02/25 15:13:01 justb session id generation more robust* * Revision 1.3 2005/02/21 16:59:08 justb SessionManager and session lease* introduced* * Revision 1.2 2005/02/21 12:32:28 justb fixed publish event in Controller* * Revision 1.1 2005/02/21 11:50:46 justb ohase1 of refactoring Subscriber into* Session/Controller/Subscriber*/
然后修改了nl.justobjects.pushlet.core.SessionManager,修改了createSession()方法:

// Copyright (c) 2000 Just Objects B.V. <just@justobjects.nl> // Distributable under LGPL license. See terms of license at gnu.org.package nl.justobjects.pushlet.core;import nl.justobjects.pushlet.util.Log; import nl.justobjects.pushlet.util.PushletException; import nl.justobjects.pushlet.util.Rand; import nl.justobjects.pushlet.util.Sys;import java.rmi.server.UID; import java.util.*; import java.lang.reflect.Method; import java.lang.reflect.InvocationTargetException;/*** Manages lifecycle of Sessions.** @author Just van den Broecke - Just Objects &copy;* @version $Id: SessionManager.java,v 1.12 2007/12/04 13:55:53 justb Exp $*/ public class SessionManager implements ConfigDefs {/*** Singleton pattern: single instance.*/private static SessionManager instance;static {// Singleton + factory pattern: create single instance// from configured class nametry {instance = (SessionManager) Config.getClass(SESSION_MANAGER_CLASS,"nl.justobjects.pushlet.core.SessionManager").newInstance();Log.info("SessionManager created className=" + instance.getClass());} catch (Throwable t) {Log.fatal("Cannot instantiate SessionManager from config", t);}}/*** Timer to schedule session leasing TimerTasks.*/private Timer timer;private final long TIMER_INTERVAL_MILLIS = 60000;/*** Map of active sessions, keyed by their id, all access is through mutex.*/private Map sessions = new HashMap(13);/*** Cache of Sessions for iteration and to allow concurrent modification.*/private Session[] sessionCache = new Session[0];/*** State of SessionCache, becomes true whenever sessionCache out of sync* with sessions Map.*/private boolean sessionCacheDirty = false;/*** Lock for any operation on Sessions (Session Map and/or -cache).*/private final Object mutex = new Object();/*** Singleton pattern: protected constructor needed for derived classes.*/protected SessionManager() {}/*** Visitor pattern implementation for Session iteration.* <p/>* This method can be used to iterate over all Sessions in a threadsafe way.* See Dispatcher.multicast and broadcast methods for examples.** @param visitor* the object that should implement method parm* @param method* the method to be called from visitor* @param args* arguments to be passed in visit method, args[0] will always be* Session object*/public void apply(Object visitor, Method method, Object[] args) {synchronized (mutex) {// Refresh Session cache if required// We use a cache for two reasons:// 1. to prevent concurrent modification from within visitor method// 2. some optimization (vs setting up Iterator for each apply()if (sessionCacheDirty) {// Clear out existing cachefor (int i = 0; i < sessionCache.length; i++) {sessionCache[i] = null;}// Refill cache and update statesessionCache = (Session[]) sessions.values().toArray(sessionCache);sessionCacheDirty = false;}// Valid session cache: loop and call supplied Visitor methodSession nextSession;for (int i = 0; i < sessionCache.length; i++) {nextSession = sessionCache[i];// Session cache may not be entirely filledif (nextSession == null) {break;}try {// First argument is always a Session objectargs[0] = nextSession;// Use Java reflection to call the method passed by the// Visitormethod.invoke(visitor, args);} catch (IllegalAccessException e) {Log.warn("apply: illegal method access: ", e);} catch (InvocationTargetException e) {Log.warn("apply: method invoke: ", e);}}}}/*** Create new Session (but add later).*//*** public Session createSession(Event anEvent) throws PushletException { * return Session.create(createSessionId());}* * * 這是原來的createSession方法,可以看到,雖然有anEvent參數··但是卻沒有在createSession的時候使用*/public Session createSession(Event anEvent) throws PushletException {// Trivialreturn Session.create(createSessionId(), anEvent);}/*** Singleton pattern: get single instance.*/public static SessionManager getInstance() {return instance;}/*** Get Session by session id.*/public Session getSession(String anId) {synchronized (mutex) {return (Session) sessions.get(anId);}}/*** Get copy of listening Sessions.*/public Session[] getSessions() {synchronized (mutex) {return (Session[]) sessions.values().toArray(new Session[0]);}}/*** Get number of listening Sessions.*/public int getSessionCount() {synchronized (mutex) {return sessions.size();}}/*** Get status info.*/public String getStatus() {Session[] sessions = getSessions();StringBuffer statusBuffer = new StringBuffer();statusBuffer.append("SessionMgr: " + sessions.length + " sessions \\n");for (int i = 0; i < sessions.length; i++) {statusBuffer.append(sessions[i] + "\\n");}return statusBuffer.toString();}/*** Is Session present?.*/public boolean hasSession(String anId) {synchronized (mutex) {return sessions.containsKey(anId);}}/*** Add session.*/public void addSession(Session session) {synchronized (mutex) {sessions.put(session.getId(), session);sessionCacheDirty = true;}// log(session.getId() + " at " + session.getAddress() + " adding ");info(session.getId() + " at " + session.getAddress() + " added ");}/*** Register session for removal.*/public Session removeSession(Session aSession) {synchronized (mutex) {Session session = (Session) sessions.remove(aSession.getId());if (session != null) {info(session.getId() + " at " + session.getAddress()+ " removed ");}sessionCacheDirty = true;return session;}}/*** Starts us.*/public void start() throws PushletException {if (timer != null) {stop();}timer = new Timer(false);timer.schedule(new AgingTimerTask(), TIMER_INTERVAL_MILLIS,TIMER_INTERVAL_MILLIS);info("started; interval=" + TIMER_INTERVAL_MILLIS + "ms");}/*** Stopis us.*/public void stop() {if (timer != null) {timer.cancel();timer = null;}synchronized (mutex) {sessions.clear();}info("stopped");}/*** Create unique Session id.*/protected String createSessionId() {// Use UUID if specified in config (thanks Uli Romahn)if (Config.hasProperty(SESSION_ID_GENERATION)&& Config.getProperty(SESSION_ID_GENERATION).equals(SESSION_ID_GENERATION_UUID)) {// We want to be Java 1.4 compatible so use UID class (1.5+ we may// use java.util.UUID).return new UID().toString();}// Other cases use random name// Create a unique session id// In 99.9999 % of the cases this should be generated at once// We need the mutext to prevent the chance of creating// same-valued ids (thanks Uli Romahn)synchronized (mutex) {String id;while (true) {id = Rand.randomName(Config.getIntProperty(SESSION_ID_SIZE));if (!hasSession(id)) {// Created unique session idbreak;}}return id;}}/*** Util: stdout printing.*/protected void info(String s) {Log.info("SessionManager: " + new Date() + " " + s);}/*** Util: stdout printing.*/protected void warn(String s) {Log.warn("SessionManager: " + s);}/*** Util: stdout printing.*/protected void debug(String s) {Log.debug("SessionManager: " + s);}/*** Manages Session timeouts.*/private class AgingTimerTask extends TimerTask {private long lastRun = Sys.now();private long delta;private Method visitMethod;public AgingTimerTask() throws PushletException {try {// Setup Visitor Methods for callback from SessionManagerClass[] argsClasses = { Session.class };visitMethod = this.getClass().getMethod("visit", argsClasses);} catch (NoSuchMethodException e) {throw new PushletException("Failed to setup AgingTimerTask", e);}}/*** Clock tick callback from Timer.*/public void run() {long now = Sys.now();delta = now - lastRun;lastRun = now;debug("AgingTimerTask: tick");// Use Visitor pattern to loop through Session objects (see visit()// below)getInstance().apply(this, visitMethod, new Object[1]);}/*** Callback from SessionManager during apply()*/public void visit(Session aSession) {try {// Age the leaseaSession.age(delta);debug("AgingTimerTask: visit: " + aSession);// Stop session if lease expiredif (aSession.isExpired()) {info("AgingTimerTask: Session expired: " + aSession);aSession.stop();}} catch (Throwable t) {warn("AgingTimerTask: Error in timer task : " + t);}}} }/** $Log: SessionManager.java,v $ Revision 1.12 2007/12/04 13:55:53 justb* reimplement SessionManager concurrency (prev version was not thread-safe!)* * Revision 1.11 2007/11/23 14:33:07 justb core classes now configurable through* factory* * Revision 1.10 2007/11/10 14:47:45 justb make session key generation* configurable (can use uuid)* * Revision 1.9 2007/11/10 14:17:18 justb minor cosmetic changes just commit now* * Revision 1.8 2007/07/02 08:12:16 justb redo to original version of session* cache (with break, but nullify array first)* * Revision 1.7 2007/07/02 07:33:02 justb small fix in sessionmgr for holes in* sessioncache array (continue i.s.o. break)* * Revision 1.6 2006/11/18 12:13:47 justb made SessionManager constructor* protected to allow constructing derived classes* * Revision 1.5 2005/02/28 15:58:05 justb added SimpleListener example* * Revision 1.4 2005/02/28 12:45:59 justb introduced Command class* * Revision 1.3 2005/02/28 09:14:55 justb sessmgr/dispatcher factory/singleton* support* * Revision 1.2 2005/02/25 15:13:01 justb session id generation more robust* * Revision 1.1 2005/02/21 16:59:09 justb SessionManager and session lease* introduced*/

接著··就大膽的修改了nl.justobjects.pushlet.core.EventPullSource,這里我修改了

abstract protected Event pullEvent();
? ? 改為了


abstract protected void pullEvent();
?? 83 public void run() { 84 Log.debug(getClass().getName() + ": starting..."); 85 alive = true; 86 while (alive) { 87 try { 88 89 Thread.sleep(getSleepTime()); 90 91 // Stopped during sleep: end loop. 92 if (!alive) { 93 break; 94 } 95 96 // If passivated wait until we get 97 // get notify()-ied. If there are no subscribers 98 // it wasts CPU to remain producing events... 99 synchronized (this) { 00 while (!active) { 01 Log.debug(getClass().getName() + ": waiting..."); 02 wait(); 03 } 04 } 05 06 } catch (InterruptedException e) { 07 break; 08 } 09 10 try { 11 // Derived class should produce an event. 12 Event event = pullEvent(); 13 14 // Let the publisher push it to subscribers. 15 Dispatcher.getInstance().multicast(event); 16 } catch (Throwable t) { 17 Log.warn("EventPullSource exception while multicasting ", t); 18 t.printStackTrace(); 19 } 20 } 21 Log.debug(getClass().getName() + ": stopped"); 22 } 23}

? ?改為了


public void run() {Log.debug(getClass().getName() + ": starting...");alive = true;while (alive) {try {Thread.sleep(getSleepTime());// Stopped during sleep: end loop.if (!alive) {break;}// If passivated wait until we get// get notify()-ied. If there are no subscribers// it wasts CPU to remain producing events...synchronized (this) {while (!active) {Log.debug(getClass().getName() + ": waiting...");wait();}}} catch (InterruptedException e) {break;}try {// Derived class should produce an event.pullEvent();// Let the publisher push it to subscribers.//Dispatcher.getInstance().multicast(event);} catch (Throwable t) {Log.warn("EventPullSource exception while multicasting ", t);t.printStackTrace();}}Log.debug(getClass().getName() + ": stopped");}
修改的原因··是原來的run線程啟動以后會通過getEvent()來獲得event然后通過??Dispatcher.getInstance().multicast(event); 將事件廣播了出去;我這里的改造以后的思路是,pullEvent()不再返回event了,線程中也不去進行廣播了,所有的操作,包括event的創建以及event的廣播還是單播都在pullEvent()中進行。


最后就是js的修改了,修改ajax-pushlet-client.js

給PL增加字段parameters;修改后如下:

var PL = {NV_P_FORMAT: 'p_format=xml-strict',NV_P_MODE: 'p_mode=pull',pushletURL: null,webRoot: null,sessionId: null,STATE_ERROR: -2,STATE_ABORT: -1,STATE_NULL: 1,STATE_READY: 2,STATE_JOINED: 3,STATE_LISTENING: 3,state: 1,<span style="color:#cc0000;">parameters:[],</span> ......}
_doRequest方法修改:

_doRequest: function(anEvent, aQuery) {
// Check if we are not in any error state
if (PL.state < 0) {
PL._setStatus('died (' + PL.state + ')');
return;
}


// We may have (async) requests outstanding and thus
// may have to wait for them to complete and change state.
var waitForState = false;
if (anEvent == 'join' || anEvent == 'join-listen') {
// We can only join after initialization
waitForState = (PL.state < PL.STATE_READY);
} else if (anEvent == 'leave') {
PL.state = PL.STATE_READY;
} else if (anEvent == 'refresh') {
// We must be in the listening state
if (PL.state != PL.STATE_LISTENING) {
return;
}
} else if (anEvent == 'listen') {
// We must have joined before we can listen
waitForState = (PL.state < PL.STATE_JOINED);
} else if (anEvent == 'subscribe' || anEvent == 'unsubscribe') {
// We must be listeing for subscription mgmnt
waitForState = (PL.state < PL.STATE_LISTENING);
} else {
// All other requests require that we have at least joined
waitForState = (PL.state < PL.STATE_JOINED);
}


// May have to wait for right state to issue request
if (waitForState == true) {
PL._setStatus(anEvent + ' , waiting... state=' + PL.state);
setTimeout(function() {
PL._doRequest(anEvent, aQuery);
}, 100);
return;
}


// ASSERTION: PL.state is OK for this request


// Construct base URL for GET
var url = PL.pushletURL + '?p_event=' + anEvent;


// Optionally attach query string
if (aQuery) {
url = url + '&' + aQuery;
}


// Optionally attach session id
if (PL.sessionId != null) {
url = url + '&p_id=' + PL.sessionId;
if (anEvent == 'p_leave') {
PL.sessionId = null;
}
}

//這里是我修改的地方,我的數組中的偶數是參數名,奇數是參數內容,這里把我的參數拼接到了url中。
? ? if(PL.parameters.length > 0) { ?

? ? url+="&" + PL.parameters[0] + "=" + PL.parameters[1];
? ?} ?

PL.debug('_doRequest', url);
PL._getXML(url, PL._onResponse);


// uncomment to use synchronous XmlHttpRequest
//var rsp = PL._getXML(url);
//PL._onResponse(rsp); ?*/
},



額,修改完了,可以配置pushlet的相關參數,來使用pushlet了。


在web.xml中配置如下參數

<servlet><servlet-name>pushlet</servlet-name><servlet-class>nl.justobjects.pushlet.servlet.Pushlet</servlet-class><load-on-startup>3</load-on-startup></servlet><servlet-mapping><servlet-name>pushlet</servlet-name><url-pattern>/admin/pushlet.srv</url-pattern></servlet-mapping>

這是pushlet配置的基本參數,這里我配置的是/admin/pushlet.srv,是因為項目的路徑是localhost:8080/項目名 ,而我的頁面是在localhost:8080/項目名/admin/下面,所以加了/admin/pushlet.srv。如果你的頁面就在項目目錄下,就不用加前面的/admin了。


在sources.properties中配置如下參數

# # Properties file for EventSource objects to be instantiated. # # Place this file in the CLASSPATH (e.g. WEB-INF/classes) or directly under WEB-INF. # # $Id: sources.properties,v 1.2 2007/11/10 14:12:16 justb Exp $ # # Each EventSource is defined as <key>=<classname> # 1. <key> should be unique within this file but may be any name # 2. <classname> is the full class name # # # Define Pull Sources here. These classes must be derived from # nl.justobjects.pushlet.core.EventPullSource # Inner classes are separated with a $ sign from the outer class. source1=org.calonlan.soulpower.plug.HwPushlet$MessClazz # TO BE DONE IN NEXT VERSION # define Push Sources here. These must implement the interface # nl.justobjects.pushlet.core.EventSource
這里把我的pushlet的實現類配置進去了。



最后就是如何使用了。


單播:


package org.calonlan.soulpower.plug;import java.sql.Connection; import java.sql.DriverManager; import java.sql.ResultSet; import java.sql.SQLException; import java.sql.Statement;import nl.justobjects.pushlet.core.Dispatcher; import nl.justobjects.pushlet.core.Event; import nl.justobjects.pushlet.core.EventPullSource; import nl.justobjects.pushlet.core.Session; import nl.justobjects.pushlet.core.SessionManager;public class HwPushlet {private static String driver = "com.mysql.jdbc.Driver";private static String dbName = "dlw";private static String userName = "root";private static String passWord = "root";private static String url = "jdbc:mysql://localhost:3306/";static public class MessClazz extends EventPullSource {@Overrideprotected long getSleepTime() {return 1000 * 60 * 3;}@Overrideprotected void pullEvent() {Session[] sessions = SessionManager.getInstance().getSessions();for (int i = 0; i < sessions.length; i++) {String userId = sessions[i].getEvent().getField("uid");Event event = Event.createDataEvent("/mipc/he");Connection conn = null;String x = "";try {Class.forName(driver);conn = DriverManager.getConnection(url + dbName, userName,passWord);Statement statement = conn.createStatement();String sql = "select * from weiorder where mystate='0' and bname='"+ userId + "'";ResultSet rst = statement.executeQuery(sql);if (rst.next()) {x = "1";} else {x = "2";}} catch (ClassNotFoundException e) {// TODO Auto-generated catch blocke.printStackTrace();} catch (SQLException e) {// TODO Auto-generated catch blocke.printStackTrace();} finally {try {conn.close();} catch (SQLException e) {// TODO Auto-generated catch blocke.printStackTrace();}}event.setField("mess", x);Dispatcher.getInstance().unicast(event, sessions[i].getId());}}}}


我這里是服務器的實現,在單播的時候查找前臺傳過來的uid中是否有消息,有的話返回一個1,沒有就返回一個2,最重要的是Dispatcher.getInstance().unicast(event, sessions[i].getId());這一句,通過單播的形式把消息傳遞給指定session的用戶。


頁面js代碼

<script type="text/javascript"> PL.parameters.push('uid'); PL.parameters.push('${user.username}'); PL._init(); PL.joinListen('/mipc/he'); function onData(event) {if(event.get("mess")=="1"){$.messager.show({title:'系統消息',msg:'您有新的訂單請注意處理',timeout:0,showType:'slide'});document.getElementById('audio_player').play();}// 離開 // PL.leave(); } </script>


廣播:廣播的還js頁面的請求就和官網一樣了,pullEvent中也只是簡單的進行廣播。代碼如下

package org.calonlan.soulpower.plug;import nl.justobjects.pushlet.core.Dispatcher; import nl.justobjects.pushlet.core.Event; import nl.justobjects.pushlet.core.EventPullSource;public class HwPushlet {static public class MessClazz extends EventPullSource {@Overrideprotected long getSleepTime() {return 1000 * 60 * 3;}@Overrideprotected void pullEvent() {Event event = Event.createDataEvent("/mipc/he");String x = "";event.setField("mess", x);Dispatcher.getInstance().multicast(event);}}}




額,時間比較倉促···最近項目太忙了,唉。這里簡單的記錄一下。也不知道這種是不是很落后或是很復雜的修改方法。還忘高手們批評指正。修改后的jar包和js請在http://download.csdn.net/detail/u012613903/9483881下載。



總結

以上是生活随笔為你收集整理的pushlet单播与多播的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

久久99国产精品 | 亚洲国产成人高清精品 | 久久99久| 日韩亚洲国产中文字幕 | 在线观看电影av | 一本一本久久a久久精品综合 | 五月婷婷综合久久 | 国产黄色片在线 | 色多多视频在线观看 | 国产精品永久在线 | 日日碰狠狠添天天爽超碰97久久 | 亚洲免费视频在线观看 | 九色免费视频 | 成人app在线免费观看 | 99精品视频免费看 | 黄色一级片视频 | 成人av在线电影 | 日韩高清免费观看 | 手机av看片| 99精彩视频在线观看免费 | 国产精品成人a免费观看 | 91av电影| 国产精品日韩欧美 | 一区二区电影在线观看 | 91丨九色丨丝袜 | 成人黄色av网站 | 91大神在线观看视频 | 午夜美女网站 | 日韩欧美国产视频 | 天天爱天天操天天爽 | 黄色毛片大全 | 国产精品欧美日韩 | 99r在线精品 | 亚洲成人av片在线观看 | 久久美女电影 | 久久99精品热在线观看 | 久草视频手机在线 | 色狠狠操| 九九视频在线播放 | 久久久久久久影视 | 午夜a区 | 超碰人人草 | 波多野结衣在线观看一区 | 久久久免费观看 | 久久精品区 | 国产成人三级在线 | 免费在线观看视频一区 | 丝袜少妇在线 | 正在播放国产91 | 国产精品手机在线播放 | 亚洲在线视频免费 | av中文字幕日韩 | 手机色在线 | av电影中文字幕在线观看 | 中文字幕在线高清 | 999久久久免费精品国产 | 右手影院亚洲欧美 | 久久五月天婷婷 | 成人免费观看视频大全 | 狠狠色狠狠综合久久 | 国产婷婷一区二区 | 亚洲国产日韩精品 | 婷婷六月天丁香 | 免费a视频在线观看 | 狠狠狠狠狠狠干 | 日日日日干 | 国产a级免费 | 欧美精品久久人人躁人人爽 | 毛片精品免费在线观看 | 亚洲性xxxx| 97国产情侣爱久久免费观看 | 国产精品久久网 | 国产精品成人久久久 | 国产精品破处视频 | 国产精品久久久久久一区二区三区 | 国产精品99蜜臀久久不卡二区 | 五月天开心 | 国产精品福利在线播放 | 521色香蕉网站在线观看 | 精品一区二区视频 | www.伊人网 | 国内精品福利视频 | 国产午夜精品一区二区三区在线观看 | 国产精品美女久久久久久2018 | 国产精品视频你懂的 | 一区二区精品视频 | 欧美性大战久久久久 | 丝袜美女视频网站 | 日韩三级视频在线看 | 狠狠操狠狠干2017 | 九九热视频在线免费观看 | 日本巨乳在线 | 国产最新视频在线观看 | 国产视频在线观看一区二区 | 日本中文字幕影院 | 国产成人中文字幕 | 久久av伊人| 国产精品免费视频网站 | 天天躁天天躁天天躁婷 | 午夜精品剧场 | 久久久精品网站 | 日日操夜夜操狠狠操 | 午夜成人影视 | 国产一区二区日本 | 久久五月精品 | 婷婷网址| 91精品一区二区三区久久久久久 | 久久国产精品系列 | 国产精品美 | 午夜精品视频一区 | 九九精品毛片 | 丝袜美女在线 | 日韩在线精品一区 | 日韩国产高清在线 | 精品视频99 | 久久久三级视频 | 黄色毛片在线看 | 亚洲精品乱码久久久久久写真 | 插综合网 | 韩日av在线 | 国产高清视频在线免费观看 | 在线观看资源 | 欧美日韩视频免费 | 97热久久免费频精品99 | 欧美性猛片, | 国产一区二区成人 | 国产精品免费在线观看视频 | 久久免费看视频 | 久久久久国产精品免费免费搜索 | 国产精品毛片久久久久久久久久99999999 | 日日插日日干 | 免费看精品久久片 | 久久免费视频在线观看6 | 色就是色综合 | 久久视频在线观看中文字幕 | 免费观看第二部31集 | 天天干天天操天天射 | 亚洲 中文 在线 精品 | 国产一线二线三线性视频 | 国产精品18久久久久久久久久久久 | 精品一区欧美 | 欧美激情va永久在线播放 | 国内三级在线 | 日韩精品视频网站 | 天天看天天干 | 亚洲精品字幕在线观看 | 夜添久久精品亚洲国产精品 | 成年人三级网站 | 黄色天堂在线观看 | 天天操天天射天天爽 | 韩国av免费观看 | 日韩一级片大全 | 欧美日本不卡视频 | 狠狠色婷婷丁香六月 | 日韩免费观看高清 | 亚洲欧洲美洲av | 久久午夜国产精品 | 精品国产视频一区 | 香蕉国产91 | 国产精品成人国产乱 | 深夜国产在线 | 激情欧美一区二区免费视频 | 黄色天堂在线观看 | 天天躁日日躁狠狠躁av麻豆 | 深爱开心激情网 | 最近中文字幕在线 | 亚洲在线综合 | 日韩欧美视频免费在线观看 | 国产精品手机在线 | 欧美亚洲免费在线一区 | 热re99久久精品国产66热 | 国产精品毛片网 | 日本黄色免费在线观看 | 中国精品少妇 | 国产日产精品一区二区三区四区 | 国产视频网站在线观看 | 精品国产a | 天天操天天添天天吹 | 国产三级精品三级在线观看 | 久久久久国产a免费观看rela | 五月婷婷六月综合 | 男女啪啪网站 | 久草免费电影 | 亚洲传媒在线 | 中文字幕精品三区 | 99视频精品全部免费 在线 | 久久国产电影 | 激情综合色综合久久综合 | av高清不卡| 日韩欧美69| 中文字幕第一页在线vr | 日日干天天 | 国产美女网 | 亚洲黑丝少妇 | 国际av在线| 久影院| 免费观看v片在线观看 | 狠狠操操 | 91完整版观看 | 亚州中文av | www.天天射.com| 在线观看视频你懂 | 国产精品日韩欧美 | 久久国产亚洲视频 | 日韩av在线网站 | 99精品视频网站 | 国内精品久久久久久久影视麻豆 | 精品乱码一区二区三四区 | 欧美一二在线 | 日韩午夜av电影 | 欧美午夜寂寞影院 | 日韩av电影手机在线观看 | 国产精品毛片一区二区 | 国内精品久久久精品电影院 | 一区二区三区在线不卡 | 又爽又黄又刺激的视频 | 超碰人人草人人 | 免费在线观看不卡av | 最近日韩中文字幕中文 | 久久久精品在线观看 | 欧美日产一区 | 精品免费一区二区三区 | 亚洲国产成人精品久久 | 亚洲视频网站在线观看 | 天天干视频在线 | www.亚洲精品视频 | 久久综合久久综合久久综合 | 99精品在线视频播放 | 国产综合在线观看视频 | 亚洲91精品在线观看 | 日本久久久久久久久 | 欧美一级看片 | 中文字幕乱码日本亚洲一区二区 | 99精品欧美一区二区三区黑人哦 | 欧美日韩成人一区 | 久久精品国产精品亚洲 | 黄色影院在线免费观看 | 黄色a大片 | 精品欧美乱码久久久久久 | 日韩av网站在线播放 | 日韩精品免费一区二区在线观看 | 毛片激情永久免费 | 日韩精品免费一区二区 | 中文字幕中文中文字幕 | 中文字幕专区高清在线观看 | 亚洲韩国一区二区三区 | 国产午夜小视频 | 在线免费av网 | 亚洲视频免费在线观看 | 摸bbb搡bbb搡bbbb | 国际精品网 | 极品国产91在线网站 | 亚洲情感电影大片 | 久久精品美女视频网站 | 精品高清美女精品国产区 | 999精品网| 精品国产精品久久 | 夜夜躁日日躁狠狠躁 | 香蕉视频亚洲 | 乱男乱女www7788| 久久国产精品二国产精品中国洋人 | 亚洲五月花| 日女人免费视频 | 999在线视频 | 久久97超碰 | 婷婷日 | 色香蕉在线视频 | 久久久免费网站 | 91人人澡人人爽人人精品 | 欧美坐爱视频 | 免费看毛片在线 | 亚洲全部视频 | 成人h视频在线 | 国产免费观看久久黄 | 少妇搡bbbb搡bbb搡aa | 韩国一区二区三区在线观看 | 91成人免费电影 | 久久久久久美女 | 九九精品久久久 | 国内精品久久影院 | 日韩欧美极品 | 国产福利一区二区在线 | 国产高清免费观看 | 狠狠操综合 | 狠狠色丁香久久综合网 | 日韩精品一区在线观看 | 手机看片| av久久在线 | 午夜精品一区二区三区在线 | 国产成人精品午夜在线播放 | 天天干天天玩天天操 | 亚洲涩综合 | 国产伦理久久精品久久久久_ | av在线日韩 | av怡红院 | 免费看黄的视频 | 狠狠干狠狠操 | 日本精品小视频 | 天天射综合网站 | 欧美国产三区 | 成人久久视频 | 精品国产乱码久久久久 | 久久久久久高潮国产精品视 | a视频在线观看 | 天天操天天操天天 | www.激情五月.com | 九九视频免费在线观看 | 国产91精品一区二区绿帽 | 精品久久久久久久久久久久久久久久久久 | 91免费的视频在线播放 | 国产粉嫩在线观看 | 午夜神马福利 | 日韩深夜在线观看 | 51精品国自产在线 | 欧美日韩视频一区二区三区 | 99精品国产在热久久下载 | 91免费高清| 欧美日韩久久一区 | 亚洲国产精品成人va在线观看 | 久久草视频 | 久久精品99国产精品亚洲最刺激 | 日韩精品一区二区免费视频 | 91视频午夜| 久久综合狠狠综合久久激情 | 国产高清绿奴videos | 美女黄频在线观看 | 婷婷色网站| 中文字幕在线乱 | 日韩精品专区在线影院重磅 | 一级精品视频在线观看宜春院 | 特级xxxxx欧美 | 日韩经典一区二区三区 | www久草| 国产小视频免费在线网址 | 92精品国产成人观看免费 | 成人性生交大片免费看中文网站 | 午夜久久福利 | 欧美va在线观看 | 岛国av在线不卡 | 天天操比 | 国产成人精品网站 | 欧美少妇xxx | 成人在线视频免费看 | 久热电影 | 国产理论免费 | 丁香六月在线观看 | 久操中文字幕在线观看 | 免费视频区| 人人爽网站 | 欧美精品乱码久久久久 | 五月婷婷六月丁香 | 国产一区二区在线免费观看 | 狠狠狠狠狠狠天天爱 | 91在线产啪| 免费黄色网址大全 | 精品日韩在线一区 | 国产无套精品久久久久久 | 久久视频精品在线 | 在线综合 亚洲 欧美在线视频 | 日本激情中文字幕 | 91中文字幕网 | 欧美一区二区三区免费看 | 99精品一级欧美片免费播放 | 久久伊人精品一区二区三区 | 亚洲成人高清在线 | 亚洲va男人天堂 | 久久99国产精品久久99 | 波多野结衣在线播放一区 | 日日干日日 | 一 级 黄 色 片免费看的 | 91精品啪 | 亚洲欧洲成人精品av97 | 精品一区精品二区 | 综合精品久久久 | 欧美另类69| 久久人人爽爽人人爽人人片av | v片在线看 | 国产精品av免费 | 久久婷婷精品视频 | 亚洲国产伊人 | 一区二区三区日韩在线观看 | 免费观看高清 | 最近中文字幕大全中文字幕免费 | 在线有码中文字幕 | 精品国产99国产精品 | 久久国色夜色精品国产 | 久久精品播放 | 天天综合狠狠精品 | 色偷偷88欧美精品久久久 | 91黄色小视频| 亚洲精品资源在线 | 超碰97免费观看 | 亚洲精品黄色片 | 91九色视频观看 | 国产精品普通话 | 在线 欧美 日韩 | 国产日韩欧美综合在线 | 在线小视频国产 | 亚洲成熟女人毛片在线 | 国产一级黄色免费看 | 欧美日韩国产精品一区二区亚洲 | 黄色av电影在线 | 国产一区二区电影在线观看 | 日本中文字幕高清 | 免费久久99精品国产婷婷六月 | 亚州欧美视频 | 久久精品系列 | 日本中文乱码卡一卡二新区 | 91在线免费观看国产 | 超碰.com| 91麻豆高清视频 | 午夜精品久久久久久久久久久久 | 欧美日本日韩aⅴ在线视频 插插插色综合 | 日日摸日日爽 | 免费看黄网站在线 | 久久免费毛片视频 | 久久精品日产第一区二区三区乱码 | 欧美黄色高清 | 精品一区二区三区久久久 | 欧美日韩国产精品一区二区亚洲 | 国产一区二区久久精品 | 亚洲午夜久久久综合37日本 | 操综合 | 玖玖色在线观看 | 五月激情综合婷婷 | 91精品导航| 欧美激情精品一区 | 最近最新中文字幕 | 日韩乱色精品一区二区 | 人人dvd| 国产高清视频免费观看 | 国外av在线 | 亚洲欧洲久久久 | 日韩黄色av网站 | 欧美黄网站 | 黄色免费av| 亚洲色图27p | 激情五月婷婷网 | 成人午夜久久 | 日韩精品综合在线 | 亚洲 综合 国产 精品 | 午夜电影久久久 | 中文字幕一区在线 | 又黄又爽又无遮挡免费的网站 | 综合久久网站 | 夜夜操网站 | 一区二区三区在线观看免费 | 日韩免费看的电影 | 韩国av一区二区三区在线观看 | 国产成人免费在线 | 操天天操 | 欧美性视频网站 | 欧美a在线免费观看 | 亚洲精品黄色片 | 欧美一级爽 | 欧美大码xxxx | 成人在线免费看视频 | 久久精品久久久久 | 国产精品va最新国产精品视频 | 一区二区三区电影 | 手机色在线 | 00av视频 | 成人久久影院 | 天天操天天操天天操天天 | 成年人黄色大片在线 | 国产精品乱码久久 | 福利片免费看 | 成人av片免费观看app下载 | 色网站在线观看 | 久久精品久久久久电影 | 黄色com| 婷婷视频在线播放 | 美女网站在线看 | 婷婷精品在线视频 | 国产小视频在线 | 欧美另类网站 | 国产日韩欧美在线免费观看 | 精品国产欧美一区二区三区不卡 | 探花视频免费在线观看 | 精品久久久久一区二区国产 | 综合网色 | 国产一级二级在线 | 日韩精品久久久久久久电影竹菊 | 亚洲欧美日韩一级 | 五月在线视频 | 久久精品www人人爽人人 | 在线观看深夜视频 | 欧美色道| 青春草免费在线视频 | 欧美午夜剧场 | 成人av片在线观看 | 91精品婷婷国产综合久久蝌蚪 | 久久极品 | 久草在线视频首页 | 中文字幕国产一区二区 | 欧美精品久久久久 | 深夜福利视频在线观看 | 国产黄色在线看 | 欧美日韩在线视频一区 | 日本在线视频一区二区三区 | 99久久久久久久久久 | 婷婷av电影| 日韩成人xxxx | 蜜桃视频成人在线观看 | 欧美精品乱码久久久久久按摩 | 特及黄色片| 中文字幕乱码一区二区 | 久久久久国产一区二区三区四区 | 国产精品美女久久久久久久 | 五月综合激情 | 久热精品国产 | 久久久精品国产一区二区电影四季 | 国产成人精品一区二三区 | 精品女同一区二区三区在线观看 | 亚州精品视频 | 久草在线视频免赞 | 日韩免费视频线观看 | 日韩免费一区二区三区 | 国产又粗又猛又爽又黄的视频免费 | 91精品国产综合久久婷婷香蕉 | 免费看高清毛片 | 四月婷婷在线观看 | 国产在线无 | 国产精品久久一卡二卡 | 色在线亚洲 | 久久激情五月婷婷 | 国产小视频在线免费观看 | 国产剧情一区二区 | 中文字幕成人在线观看 | 九九视频在线播放 | 日韩高清久久 | 亚洲黄网站 | 国产精品手机播放 | 国产视频美女 | 亚洲国产精品小视频 | 色天天| 久久久久久久久久久久久国产精品 | 99午夜| 国产成人三级 | 免费观看久久久 | 黄色在线免费观看网址 | 久久精品国产一区 | 天天操天天爽天天干 | 久久免费国产精品 | 国产原创在线 | 久久与婷婷 | 亚洲精品女人久久久 | 免费精品在线 | 久久久久99精品国产片 | 在线中文字幕视频 | 91桃花视频 | 国产精品白丝jk白祙 | 99免费在线观看 | 521色香蕉网站在线观看 | 国产精品视频免费在线观看 | 日韩在线观看a | 一区 二区 精品 | 久热电影 | av资源中文字幕 | 激情五月综合网 | 操操日| 最近中文字幕免费大全 | 日韩精品第1页 | 91福利视频久久久久 | 日韩精品综合在线 | 91九色视频观看 | 日韩在线免费看 | 免费福利视频导航 | 久久香蕉一区 | 国产一级黄色av | 久久精品亚洲综合专区 | 欧美aaaxxxx做受视频 | 国产精品国产三级国产不产一地 | 成人免费av电影 | 国产在线97| 国产一区二区三区黄 | 狠狠色丁香久久婷婷综 | 91丨九色丨首页 | 国产一区91 | 国产中文字幕网 | av福利第一导航 | 18女毛片 | 久草久热| 久草免费新视频 | 最新色站 | 欧美巨大荫蒂茸毛毛人妖 | 一区二区毛片 | 精品久久久久久久久久 | av在线免费播放网站 | 精品电影一区二区 | 久久综合久色欧美综合狠狠 | 波多野结衣在线视频一区 | 久久久国产精品电影 | 日日天天狠狠 | 免费观看v片在线观看 | 91视频在线免费下载 | 国产日韩欧美在线观看视频 | 丝袜美腿一区 | 日韩特级片 | 丁香久久激情 | 激情图片qvod | 久久电影国产免费久久电影 | 国产九九精品视频 | 欧美在线视频一区二区三区 | 久久久久久久久久久久久国产精品 | 色偷偷男人的天堂av | 国产香蕉97碰碰碰视频在线观看 | 亚洲天堂网在线观看视频 | 国产精品成人免费精品自在线观看 | 日本中文字幕久久 | 日韩美女高潮 | 中文理论片 | 国产精品99久久久久久人免费 | 久久综合精品国产一区二区三区 | 久艹视频在线免费观看 | 久久精品香蕉 | 操综合| 欧美午夜激情网 | 免费手机黄色网址 | 日韩精品一卡 | 91丨九色丨蝌蚪丨对白 | 奇米先锋 | 91入口在线观看 | 精品国产成人在线 | 91传媒视频在线观看 | 免费看日韩片 | 中文字幕精品一区 | 久久99久久99精品免观看粉嫩 | 色天天中文 | 久久观看最新视频 | 91av视频网站 | 黄色中文字幕 | 欧美美女一级片 | 狠狠狠干狠狠 | 91久久人澡人人添人人爽欧美 | 久久久激情网 | 久久伊人婷婷 | 久久久久婷 | 激情视频一区二区三区 | 在线观看国产 | 婷婷亚洲综合五月天小说 | 午夜av免费看 | 一级久久精品 | 国产一级一片免费播放放a 一区二区三区国产欧美 | 麻豆影视在线观看 | 欧美一区二视频在线免费观看 | 午夜视频在线观看网站 | 国产女教师精品久久av | 久久人人插 | 亚洲国产精品人久久电影 | 毛片精品免费在线观看 | 成人欧美在线 | 97在线精品视频 | 狠狠干狠狠色 | 日韩女同一区二区三区在线观看 | 黄色免费网站大全 | 91精品老司机久久一区啪 | 欧美a级一区二区 | 91香蕉视频污在线 | 国产成人一区二区三区电影 | 在线黄色国产电影 | 中文视频在线播放 | 91系列在线| 久久99久久久久久 | 亚洲国内精品在线 | 日韩高清一二三区 | 狠狠狠的干 | 在线看成人 | 亚洲精品国精品久久99热一 | 亚洲欧美日韩一区二区三区在线观看 | 免费看搞黄视频网站 | 亚洲天堂va | 欧美日韩久 | 天天色天天干天天色 | 韩国av电影在线观看 | 激情图片qvod | 五月婷婷六月丁香 | 亚洲成人av在线 | 天天天天爽 | 久久久精品欧美一区二区免费 | 亚洲成a人片综合在线 | 国产高清视频在线播放一区 | 亚洲精品9 | 国产欧美精品一区二区三区四区 | 91久久国产综合精品女同国语 | 涩涩在线 | 日韩午夜精品福利 | 草久久精品 | 狠狠干夜夜爱 | 韩日av一区二区 | 狠狠色噜噜狠狠 | 91丨九色丨蝌蚪丨老版 | av超碰在线| 丁香六月色 | 香蕉视频国产在线 | 国产精品久久久久久久久久三级 | av在线网站免费观看 | 国产精品久久久久久久久久免费 | 天天干天天操人体 | 国产一级电影 | 免费视频91蜜桃 | 成年人在线| 激情五月婷婷综合网 | 欧美日韩视频在线观看免费 | www.玖玖玖| 成片人卡1卡2卡3手机免费看 | 香蕉在线播放 | 亚洲狠狠 | 奇米网777 | 久99久精品视频免费观看 | 国产精品资源 | 99色网站| 五月天电影免费在线观看一区 | 91精品对白一区国产伦 | 男女激情免费网站 | 成人一级免费视频 | 亚洲欧美日韩不卡 | 三三级黄色片之日韩 | 国产高清在线精品 | 天天色播| www.黄色在线 | 色综合天天天天做夜夜夜夜做 | 国产一区二区免费在线观看 | 日日夜夜操av | 中文字幕在线免费观看 | 亚洲国产精品免费 | 91人人爽久久涩噜噜噜 | 欧美激情视频一二区 | 成人在线观看免费 | 久久久香蕉视频 | 久久国产二区 | 99久久99久久精品 | 久视频在线 | 日韩 在线| 蜜臀av性久久久久蜜臀av | 中文字幕一区二区三区久久 | 日韩在线观看av | 成人影音在线 | 精品二区视频 | 91亚洲网 | 国产精品久久久免费看 | 国产精品高潮久久av | 久久精品视频播放 | 国产中文字幕一区二区 | 国产精品视频免费在线观看 | 在线黄网站 | 国产精品美女久久久久久久久 | 国产一区视频在线观看免费 | 久久久麻豆视频 | 国产精品18久久久久久不卡孕妇 | 亚洲天堂网站视频 | 99久久影院| 久久久久久国产精品免费 | 正在播放久久 | 日韩动漫免费观看高清完整版在线观看 | 一级片色播影院 | 国产69精品久久久久久久久久 | www99精品| 在线观看的a站 | 深夜男人影院 | 日批在线看 | 五月婷婷,六月丁香 | 久久久久久久久久福利 | 日韩大片免费在线观看 | 狠狠干 狠狠操 | 视频在线国产 | 91黄色小视频 | 99国产视频| 香蕉视频在线免费 | 成人午夜免费剧场 | 99 视频 高清 | 日韩黄色软件 | 一区二区中文字幕在线观看 | 91精品视频在线 | aaa黄色毛片 | 午夜精品中文字幕 | 欧美日韩在线免费观看 | 欧美日韩中文国产 | 在线播放91 | 一区二区三区国产欧美 | av高清影院 | 国内精品久久久久久久97牛牛 | 欧美一区二区三区在线播放 | 97精品国产一二三产区 | 深爱综合网 | 美女视频a美女大全免费下载蜜臀 | 麻豆视频在线看 | 国产精品久久久久久久久婷婷 | 欧美日韩国产精品久久 | 亚洲精选99 | 亚洲综合欧美激情 | 久久伊人婷婷 | 日韩有码在线播放 | 亚洲综合欧美日韩狠狠色 | 久久久久久影视 | 97超碰人人模人人人爽人人爱 | av888av.com| av中文字幕第一页 | 亚洲午夜精品一区二区三区电影院 | 人人爽人人爽人人 | 国产中文字幕视频 | 人人草在线视频 | 亚洲va天堂va欧美ⅴa在线 | 在线观看久草 | 天天操天天操天天操 | 国产亚洲欧美一区 | 久久天天综合网 | 天天干天天插 | 国产在线国偷精品产拍免费yy | 亚洲国产三级在线观看 | 超碰人人超 | 成人在线视频免费观看 | 久久久久久久久久久福利 | 亚洲精品视频偷拍 | 日韩av网站在线播放 | 国产精品美女免费看 | 久久久免费精品视频 | 免费人做人爱www的视 | 免费在线观看av电影 | 在线看一级片 | 国内精品免费 | 亚洲高清在线观看视频 | 亚洲欧美国产精品 | 午夜在线免费观看视频 | 中文字幕一区二区三区四区久久 | 亚洲第一区精品 | 在线观看久久 | 91亚洲永久精品 | 色香天天| 亚洲精品美女在线观看播放 | 亚洲黄色免费在线看 | 欧美成亚洲 | 中文字幕国语官网在线视频 | 久久久国产精品人人片99精片欧美一 | 玖玖爱免费视频 | 日韩精品一区二区三区在线视频 | 99精品一级欧美片免费播放 | 日韩婷婷 | 日韩视频免费 | 一二区电影 | 欧美成人xxx | 丁香婷婷激情国产高清秒播 | 69国产成人综合久久精品欧美 | 国产最新在线 | 亚洲欧洲成人精品av97 | 成人黄色大片网站 | 91视视频在线直接观看在线看网页在线看 | 高清美女视频 | 97视频在线观看网址 | 午夜国产福利在线 | 黄色片视频免费 | 天天干天天搞天天射 | 96亚洲精品久久久蜜桃 | 国产精品毛片一区二区在线看 | 免费观看十分钟 | 五月天综合激情 | 免费看三级 | 国内三级在线 | 国产日韩精品一区二区三区 | 亚洲美女精品 | 激情欧美日韩一区二区 | 99国内精品 | 国产精品久久婷婷六月丁香 | 成人在线免费观看网站 | 成人av观看| 成人影视免费看 | 午夜精品一区二区三区在线 | 国产精品久久久久久久久久久免费 | 亚洲视频,欧洲视频 | 99久久综合狠狠综合久久 | 亚洲精品福利在线观看 | 97视频在线观看视频免费视频 | 国产资源在线播放 | 亚洲精品午夜国产va久久成人 | 日韩精品中文字幕有码 | 免费观看性生交 | 免费视频你懂的 | www.神马久久 | 在线观看爱爱视频 | 一区二区三区在线免费播放 | 日本精品视频免费观看 | 国产精品久久久久国产a级 激情综合中文娱乐网 | 中日韩在线视频 | 色综合天天做天天爱 | 中文字幕一区二区三区四区在线视频 | 97在线影视 | 欧美片一区二区三区 | av成年人电影 | 久久中文精品视频 | www.久艹| 国产精品乱码一区二区视频 | 国产精品美女久久久久久免费 | 国产手机视频在线观看 | 欧美黄污视频 | 日韩影视精品 | 久久久久成人精品 | 久久精品视频网站 | 国产精品一区二区三区在线免费观看 | 国产高清亚洲 | 亚洲精品免费观看视频 | 丁香 久久 综合 | 五月天丁香亚洲 | 欧美日韩在线观看一区二区三区 | 国产伦精品一区二区三区在线 | 91大神精品视频在线观看 | 在线亚洲人成电影网站色www | 亚洲精品视频在线观看免费视频 | 91人人揉日日捏人人看 | 成人91免费视频 | 久久综合久久久久88 | av动态图片 | 中文字幕在线观看视频一区二区三区 | 午夜精品视频一区 | 国产成人精品一区二区三区在线 | 黄色毛片在线 | 亚洲成人二区 | 欧美日韩中文在线观看 | 国产成人免费av电影 | 精品美女在线视频 | 亚洲黄色av网址 | 日韩在线高清免费视频 | 欧美一级电影在线观看 | 97超碰在| 国产色秀视频 | 天天久久综合 | 久久精品电影院 | 成人在线观看免费视频 | 91成年人网站| 天天天天色综合 | 欧美一级电影 | 国产福利在线免费观看 | 亚洲春色综合另类校园电影 | 狠狠狠狠狠狠狠干 | 国产亚洲精品久 | 一区二区丝袜 | 亚洲理论在线观看 | 久久精品国产亚洲aⅴ | 国产精品一区专区欧美日韩 | 91成人精品一区在线播放 | 欧美a√大片| 免费91在线观看 | 欧美性超爽 | 国产一区二区不卡视频 | 久久精品视频免费 | 特级毛片在线免费观看 | 色资源中文字幕 | 丝袜制服天堂 | 日本黄色免费在线 | 四虎在线免费观看 | 中文字幕在线看人 | 亚洲精品在线资源 | 日韩中文字幕亚洲一区二区va在线 | 麻豆传媒视频在线免费观看 | 国产精品一区二区 91 | 国产资源av | 夜夜爽天天爽 | 久久精品国产亚洲精品2020 | 91亚洲精品久久久蜜桃 | 色天天综合久久久久综合片 | 国产精品资源 | 精精国产xxxx视频在线播放 | 免费在线成人av | 欧美日韩免费一区二区三区 | av免费看av| 久久精品视频中文字幕 | 人人爽人人| 亚洲播放一区 | 丁香免费视频 | 国内一级片在线观看 | 亚洲综合日韩在线 | 8x成人免费视频 | 国产片网站 | 亚洲精品自在在线观看 | 亚洲aaa级 | 国产精品久久视频 | 中文字幕在线观看2018 | 国产不卡在线看 | 黄色录像av | 国产高清视频网 | 久久激情小视频 | 免费观看高清 | 天天干天天干天天干天天干天天干天天干 | 色综合久久久久久久久五月 | 国产丝袜高跟 | 射射射av | 美女黄色网在线播放 | 五月婷社区 | 毛片网站在线看 | 日韩视频在线一区 | 成人免费网站在线观看 | 精品视频专区 | 午夜久久久久久久久久久 | av色综合网 | 黄色激情网址 | 国产精品欧美久久久久天天影视 | 中文字幕在线观看视频网站 | 人人搞人人搞 | 久久一久久 |