日韩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单播与多播的全部內容,希望文章能夠幫你解決所遇到的問題。

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

欧美激情综合五月色丁香小说 | 国产亚洲精品女人久久久久久 | 黄色成人在线观看 | 超碰97免费 | av超碰免费在线 | 亚洲专区 国产精品 | 国产视频在线一区二区 | 偷拍精偷拍精品欧洲亚洲网站 | 中文在线√天堂 | 亚洲成成品网站 | 黄色免费网站 | 国产精品www | 九九久久婷婷 | 色99之美女主播在线视频 | 久久国产日韩 | 日本黄色免费在线观看 | 97**国产露脸精品国产 | 黄色成年网站 | 国产精品一区免费看8c0m | 国外调教视频网站 | 亚洲片在线观看 | 国产精品久久久久久久电影 | 国产精品不卡av | 久草在线最新视频 | 婷婷色资源 | 免费av在线网站 | 亚洲成人精品av | 97超碰中文字幕 | 国产高清在线永久 | 色大片免费看 | 国产精品色在线 | 99久热在线精品 | 久久69av| 日韩v在线91成人自拍 | 天天射,天天干 | 国产高清视频在线观看 | 808电影免费观看三年 | 在线中文字幕播放 | 久精品视频免费观看2 | 久久国产精品二国产精品中国洋人 | 国产精品欧美久久久久天天影视 | 色99色| 99视频这里只有 | 亚洲综合小说电影qvod | 成人中文字幕在线观看 | 激情小说久久 | 久久人人爽人人爽人人片 | 亚洲欧洲av在线 | 久操97| 一二三精品视频 | 亚洲国产精品va在线看黑人 | 夜夜干天天操 | 欧美日韩中文字幕在线视频 | 久久久香蕉视频 | 亚洲 欧美变态 另类 综合 | 久久你懂的 | 网站在线观看日韩 | 91黄色视屏 | 亚洲成人国产精品 | 美国人与动物xxxx | 欧美日本中文字幕 | 欧美最爽乱淫视频播放 | 悠悠av资源片 | 天天干.com | 国产日产精品一区二区三区四区的观看方式 | 久久婷婷一区二区三区 | 色综合久久久网 | 麻豆视屏 | 国产一区福利在线 | 日韩av网站在线播放 | 碰超在线观看 | 国产在线视频一区二区 | 97电影网手机版 | 久久久久五月 | 国产亚洲精品免费 | 午夜av不卡 | www.香蕉视频在线观看 | 99久久国产免费看 | 国产视频首页 | 国产中文字幕视频在线 | 久久精品播放 | 亚洲精品国产精品乱码不99热 | 91看片成人 | 精品产品国产在线不卡 | 三级免费黄色 | 国产成人在线播放 | 欧美 亚洲 另类 激情 另类 | 激情在线网站 | 久久久免费观看视频 | 黄色小说在线观看视频 | 国产色拍 | 一区二区三区免费在线 | 日日日日干 | 天天人人综合 | 91在线精品播放 | 人人澡av | 国产精品私人影院 | 免费看的黄色小视频 | 日韩欧美精品一区二区三区经典 | 91污在线| 国产 日韩 欧美 中文 在线播放 | 国产v在线播放 | 中文字幕在线观看网站 | 四虎www| 婷婷久月 | 日本中出在线观看 | 五月天中文字幕mv在线 | 天堂成人在线 | 在线亚洲欧美日韩 | 亚洲精品一区二区18漫画 | 亚洲国产精品影院 | 美女黄频| 99久久精品网 | 91中文在线观看 | 久久免费视频4 | 99在线观看 | 在线观看视频三级 | 国产第一页在线观看 | 日批网站免费观看 | 99精品视频精品精品视频 | 在线观看日韩免费视频 | 91在线亚洲| 国产四虎在线 | 欧美性生活免费看 | 国产美女网站视频 | 久久这里有 | 久久不射影院 | 精品96久久久久久中文字幕无 | 精品国产一区二区三区不卡 | 色综合五月 | 国产麻豆视频网站 | 国产精品久久久免费看 | av在线播放国产 | 亚洲午夜精品久久久久久久久久久久 | 精品在线二区 | 九色一区二区 | www.久久99| 久久艹影院 | 激情综合色综合久久综合 | 久久久久久高潮国产精品视 | 99久久精品国 | 91色偷偷 | 国产精品毛片一区视频 | 不卡电影一区二区三区 | 91大神dom调教在线观看 | 亚洲精品xxx | 午夜久久久久久久 | 久久久免费精品国产一区二区 | 91污视频在线 | 国产麻豆精品在线观看 | 蜜臀av网站| 韩国在线一区二区 | 亚洲毛片久久 | 天天综合成人网 | 人人爽人人爽人人片av | 日韩中字在线观看 | 丁香婷婷激情国产高清秒播 | 日韩小视频网站 | 久久久久久久久综合 | 992tv又爽又黄的免费视频 | 在线天堂中文www视软件 | 国产色婷婷在线 | 久久精品视频2 | wwwwww色| 狠狠狠色丁香婷婷综合久久88 | 999久久久久久久久久久 | 久久成人午夜 | 久久一区二区三区超碰国产精品 | 91av播放 | 国产综合福利在线 | 99视频免费在线观看 | 中文字幕乱码一区二区 | 亚洲涩涩网站 | 国产亚洲免费的视频看 | 最近日韩中文字幕中文 | 97免费视频在线播放 | www.888.av| 丁香五月网久久综合 | 91完整版观看 | 国产乱对白刺激视频在线观看女王 | 精品美女在线视频 | 久久av网 | 日韩av看片 | 亚洲精品婷婷 | 91在线操| 夜夜躁狠狠燥 | 女人18片| 美女视频网 | 成人亚洲免费 | 亚洲涩涩一区 | 99精品国产兔费观看久久99 | 欧美精品黑人性xxxx | 欧美激情精品久久久 | 成人久久久久久久久久 | 91一区二区三区久久久久国产乱 | 日日操天天射 | 日韩在线观看中文字幕 | 欧美日韩一区二区视频在线观看 | 日日爽天天 | 日韩免费视频观看 | 精品女同一区二区三区在线观看 | 久久久午夜影院 | 天天插狠狠插 | 男女视频国产 | 91久久在线观看 | 麻花豆传媒mv在线观看 | 成人三级黄色 | 色综合天天狠天天透天天伊人 | 欧美在线视频精品 | 精品国产综合区久久久久久 | 日韩色在线观看 | 国产一二三区在线观看 | 三上悠亚一区二区在线观看 | 91成年人在线观看 | 精品免费久久久久 | 亚洲成年片 | 久草在线资源观看 | 国产女教师精品久久av | 免费在线观看午夜视频 | 亚洲欧美国内爽妇网 | 欧美在线观看视频免费 | 久久久国产日韩 | 手机成人av在线 | 中文字幕亚洲高清 | 国产视频精品在线 | 亚洲国产精品女人久久久 | 天天射天天射天天 | 国产视频一区在线播放 | www.五月婷 | 伊人久久影视 | 国产不卡毛片 | 亚洲精品理论 | 六月色婷| av网站有哪些 | 国产亚洲人成网站在线观看 | 97人人模人人爽人人少妇 | 伊人射 | 激情婷婷综合网 | 国产精品久久久久高潮 | 91成人在线视频观看 | 欧美乱熟臀69xxxxxx | 日韩激情视频 | 久久久.com| 日韩精品一区二区三区中文字幕 | 国产精品欧美久久 | 久久综合色影院 | 在线看一级片 | 免费日韩一级片 | 日韩欧美国产激情在线播放 | 亚洲成av人影院 | 日韩中文字幕第一页 | 日韩手机在线观看 | 久久狠狠一本精品综合网 | 日韩一区二区三区高清免费看看 | a在线播放| 丁香 婷婷 激情 | 在线欧美中文字幕 | 欧美国产日韩在线视频 | 操操操日日日 | 亚洲最大激情中文字幕 | 91网站观看 | 手机看片国产 | 999久久久欧美日韩黑人 | 少妇bbw撒尿| 精品一区二区在线播放 | 天天人人| 亚洲乱码在线 | 免费精品 | 久久不卡日韩美女 | 在线一二三区 | 国产午夜一级毛片 | 欧美激情在线网站 | 免费99视频 | 夜夜操狠狠干 | 91污在线观看 | 国内成人av | 国产日韩欧美在线一区 | 99久久精品免费看国产麻豆 | 超碰大片| 国产一区在线播放 | 麻豆视频一区二区 | 国产精品久久一区二区无卡 | 久久精品99北条麻妃 | 精品福利视频在线 | 2019中文字幕网站 | 欧美日韩精品免费观看 | 亚洲色五月 | 91成人网页版 | 亚洲视频在线看 | 中文字幕资源站 | 99re热精品视频 | 久久免费观看视频 | 亚洲精品日韩一区二区电影 | 日韩成人黄色av | 亚洲人成综合 | 日韩高清dvd| 九草视频在线观看 | 日日夜夜噜噜噜 | 91精品久久久久久 | 国产精品欧美久久久久久 | 精品在线亚洲视频 | 狠狠色伊人亚洲综合成人 | 久久国产精品久久国产精品 | 久草视频在线免费播放 | www麻豆视频 | 久久国产区 | 欧美成人播放 | 日本美女xx | 丁香婷婷成人 | 国产96在线观看 | 中文字幕乱码亚洲精品一区 | 久久99久久99精品免视看婷婷 | av电影中文字幕 | 中文字幕在线日 | 91麻豆精品久久久久久 | 久久综合九色综合久99 | 99精品视频一区 | 精品国产成人av在线免 | 四虎成人精品永久免费av九九 | 懂色av懂色av粉嫩av分享吧 | 欧美久久久久久久久 | 91黄视频在线观看 | 少妇bbr搡bbb搡bbb | 亚洲国产精品人久久电影 | 亚洲a色 | 国产精品永久免费视频 | 国产黄 | 看片的网址 | 成人免费视频在线观看 | 日韩精品久久久久久 | 狠狠的操你 | 欧美日韩亚洲国产一区 | 欧洲精品码一区二区三区免费看 | 成人av免费网站 | 亚洲天堂精品 | 亚洲精品免费播放 | 色综合婷婷久久 | 日韩有码在线播放 | 中文网丁香综合网 | 亚洲亚洲精品在线观看 | 免费观看一区二区 | 91插插插免费视频 | 久久综合欧美精品亚洲一区 | 久久国产精品99精国产 | 久久久久久久久久电影 | 久久av观看 | 五月激情丁香 | 黄色片网站av | 色婷婷av在线 | 精品主播网红福利资源观看 | 亚洲a在线观看 | 午夜美女wwww| 久久在现 | 久久久久国产一区二区三区 | 黄色小说免费观看 | 久久免费视频网 | 亚洲aⅴ乱码精品成人区 | 国产精品麻豆视频 | 在线观看视频免费播放 | 国产视频在线观看一区 | 亚洲韩国一区二区三区 | 国产视频一区二区三区在线 | 久久99精品国产 | 成人黄色片在线播放 | 日韩电影在线观看一区二区 | 久久人人看 | 久久久国产一区 | 婷婷色综合 | av天天草| 国产v在线播放 | 成人免费看电影 | av在线h | 国产成人一区二区三区久久精品 | 婷婷福利影院 | 日韩av区 | 啪啪免费视频网站 | 国产成人香蕉 | 正在播放五月婷婷狠狠干 | av一级片网站 | 亚洲精品国产第一综合99久久 | 高清精品久久 | 免费h精品视频在线播放 | 日韩黄色中文字幕 | 99久热 | 在线观看国产永久免费视频 | 亚洲专区视频在线观看 | 黄色a大片| 国产日韩视频在线观看 | 美女黄色网在线播放 | 人人澡人人添人人爽一区二区 | 国产成人精品一区二区三区在线 | 国内精品久久久久影院男同志 | 在线看成人av | 国产精品99久久免费黑人 | 在线观看一级视频 | 日本女人在线观看 | 丁香婷婷激情国产高清秒播 | 久久激情视频免费观看 | 国产a国产a国产a | 久久情爱 | 久久婷婷一区二区三区 | 成人av一区二区三区 | .精品久久久麻豆国产精品 亚洲va欧美 | 精精国产xxxx视频在线播放 | 国产黄色免费在线观看 | 日韩久久精品一区二区 | 日韩精品一区二区三区高清免费 | 丝袜美女视频网站 | 久久精品99北条麻妃 | 人人干人人爽 | 成人av免费在线 | 亚洲精品免费在线 | 一区二区三区av在线 | 亚洲精品成人 | 国产免费视频一区二区裸体 | 麻豆小视频在线观看 | 国内久久久久 | 99热这里只有精品国产首页 | 婷婷色中文网 | 久久婷婷一区二区三区 | 午夜精品电影一区二区在线 | 91福利小视频 | 亚洲电影网站 | 亚洲欧洲精品在线 | 国产精品一区二区视频 | 97涩涩视频 | 久久r精品 | 久久这里只有精品首页 | 国产精品美女免费视频 | 日韩视频欧美视频 | 成人激情开心网 | 色综合天天色 | 免费看的黄网站 | 97超碰国产精品女人人人爽 | 又爽又黄又刺激的视频 | 久久久免费精品视频 | 久久精品国产成人 | 国产精品久久久久久久久搜平片 | 久久精品艹 | 亚洲区另类春色综合小说校园片 | 国产亚州av | 国产精品国产精品 | 国产剧情亚洲 | 综合久久五月天 | 免费精品视频 | 日韩久久久久久久久久 | 中中文字幕av在线 | 免费观看成人av | 欧美日韩国产一二三区 | 最近日本中文字幕a | 成人四虎 | 1024久久 | www.天天干 | 国产高清视频在线 | 超碰在线99 | 久久精品毛片基地 | 91成人破解版 | 免费看三片| 不卡视频一区二区三区 | 天天操天天舔天天干 | 亚洲成a人片在线观看网站口工 | 黄色片视频在线观看 | www.99av| 日本久久免费电影 | 婷婷久操 | www.久久久久 | 日韩精品一区二区不卡 | 91视频最新网址 | 日韩电影在线看 | 久久久国产精品电影 | 最近中文字幕在线中文高清版 | 国际精品久久久久 | 91片黄在线观看动漫 | 在线免费精品视频 | 中文字幕一区二区三区四区久久 | 欧美日韩免费观看一区=区三区 | 国产系列在线观看 | av爱干| 2024国产在线 | 久久成人在线 | 国产成人精品综合久久久久99 | 97热视频 | 在线看毛片网站 | 久久视频在线免费观看 | 在线观看视频在线观看 | 精品福利av | 欧美精品黑人性xxxx | av黄免费看 | 天天躁日日躁狠狠躁av中文 | 中文字幕一区二区三区四区 | 国产免费小视频 | 精品一区精品二区 | 国产在线播放一区 | 久久精品99精品国产香蕉 | 久久夜夜爽 | av手机在线播放 | 亚洲精品乱码久久久久久 | 丁香九月婷婷综合 | 久久综合免费视频影院 | 日韩免费三级 | 日韩av午夜在线观看 | 在线影院中文字幕 | 在线视频欧美精品 | 99久热| 天天综合入口 | 久久免费毛片视频 | 国产永久免费观看 | av在线免费不卡 | 人人爽人人 | 亚洲成人黄色av | 97电影院在线观看 | 黄色免费视频在线观看 | 精品一区二区6 | 精品一区二区av | 四虎影视成人精品国库在线观看 | 五月天激情综合网 | 日韩欧美一区二区三区视频 | 丁香九月激情综合 | 伊人手机在线 | 色视频国产直接看 | 国产麻豆视频免费观看 | 免费国产一区二区 | 国产精品黄网站在线观看 | v片在线看 | 一区二区精品国产 | 免费看黄在线网站 | 蜜臀av性久久久久蜜臀aⅴ流畅 | 日韩在线电影观看 | www.黄色网.com | 精品久久久久久久久久久久 | 在线观看一区二区精品 | 国产91学生| 久久精品视频在线观看免费 | 日韩av中文在线 | 欧美日韩观看 | 亚洲婷婷伊人 | 九色91视频| 久久影院亚洲 | 日本久久精 | 中文字幕色在线视频 | 美女视频黄在线观看 | 在线视频久久 | 亚洲艳情 | 欧美大jb | 一区二区激情 | 在线免费高清一区二区三区 | 日韩av资源在线观看 | 久久高清免费视频 | 久久不见久久见免费影院 | 91片网| 深爱激情五月综合 | 韩国精品视频在线观看 | 国产亚州av | 成人9ⅰ免费影视网站 | 99999精品| 91视频啊啊啊 | 国产成人性色生活片 | 天天艹天天 | 麻花豆传媒mv在线观看 | 在线看的av网站 | 在线观看免费视频 | 久热爱 | 欧美午夜寂寞影院 | 亚洲精品一区中文字幕乱码 | 99精品小视频 | 日韩经典一区二区三区 | 黄色在线看网站 | 亚洲成人精品在线观看 | 特级西西人体444是什么意思 | 日韩在线观看网站 | 久久国产福利 | 狠狠操狠狠干天天操 | 日韩乱色精品一区二区 | 久久久久久97三级 | 久久九九国产视频 | 国内精品小视频 | 国外调教视频网站 | 久久国产亚洲精品 | 麻豆免费精品视频 | 中文亚洲欧美日韩 | 欧美一区二区在线 | 黄色三级免费片 | 91精品国产九九九久久久亚洲 | av中文字幕在线播放 | 成人在线观看日韩 | 国产高清视频网 | 韩国av免费观看 | 日韩视频在线观看免费 | 国产精品久久久久久久久久久久冷 | 午夜精品久久久久久久99婷婷 | 久草精品免费 | 正在播放国产精品 | 成年美女黄网站色大片免费看 | 色婷婷丁香 | 手机成人在线电影 | 国产精品一区二区久久精品爱微奶 | 81精品国产乱码久久久久久 | 精品v亚洲v欧美v高清v | 黄色av网站在线观看 | 黄色tv视频| 亚洲涩综合 | 国产精品视频区 | 在线欧美日韩 | 国产精品一区专区欧美日韩 | a'aaa级片在线观看 | 欧美日韩高清一区二区三区 | 97av免费视频 | 久久久免费 | 精品国产观看 | 亚洲第五色综合网 | 国产精品免费视频一区二区 | 久久超碰免费 | 91最新在线视频 | www..com毛片| 精品人人爽 | 久久精品网 | 国产一区免费看 | 91成人亚洲| avwww在线 | 日本久久久亚洲精品 | 欧美一级性 | 免费av高清| 国产精品免费成人 | 黄色大全免费网站 | 欧美小视频在线观看 | 国产精品免费麻豆入口 | 国产一区精品在线观看 | 四虎亚洲精品 | 日韩在线免费 | 99热国产在线中文 | 99性视频 | www在线观看国产 | 亚洲国产中文字幕 | 国产精品视频久久久 | 精品999在线观看 | 国产精品久久久亚洲 | 久久综合加勒比 | 91探花在线 | 久久免费视频在线观看6 | 一区二区三区在线观看免费 | 99热网站| 成人国产网址 | 精品国产91亚洲一区二区三区www | av免费黄色 | 特级黄录像视频 | 日韩精品一区二区三区在线播放 | 亚洲国产中文字幕 | 精品国产综合区久久久久久 | 天天干天天操天天拍 | 欧美了一区在线观看 | 2024av| 91精品无人成人www | 久久国产高清 | 国产成人精品999在线观看 | 一区二区三区中文字幕在线观看 | 亚洲天堂视频在线 | 亚洲手机av| 麻豆视频免费在线观看 | 中文字幕在线视频精品 | 国产精品久久久久久久久久久久冷 | 日本一区二区三区免费观看 | 92av视频 | 天天躁天天狠天天透 | 伊人天天狠天天添日日拍 | 天天综合天天做天天综合 | 五月开心婷婷网 | 91中文字幕网 | 美女国产| 欧美一区二区三区四区夜夜大片 | 五月天亚洲综合 | 最新av网站在线观看 | 亚洲激情一区二区三区 | 美女av免费| 九草在线观看 | 美女黄频 | 美女网站色在线观看 | 国产资源免费 | 99视频精品免费观看, | 337p日本大胆噜噜噜噜 | 99热手机在线 | 国产视频精品久久 | 久久综合狠狠综合久久激情 | 天天鲁天天干天天射 | 久久成人人人人精品欧 | 天天操天天操天天操天天操天天操天天操 | 亚洲精品美女在线观看播放 | 亚洲综合在线五月 | 精品国产午夜 | 国产精品久久久久久久久久 | 日本精品一区二区三区在线播放视频 | 久久久久福利视频 | av片在线观看免费 | 最近中文字幕在线中文高清版 | 黄色精品一区二区 | 亚洲综合视频在线观看 | 国产精品美女久久久久久网站 | www狠狠| 毛片视频电影 | 久久午夜羞羞影院 | 日本精品久久 | 麻花传媒mv免费观看 | 免费91麻豆精品国产自产在线观看 | 亚洲国产中文字幕在线观看 | 久久96国产精品久久99漫画 | 一级片黄色片网站 | 久久久久国产一区二区三区 | 这里只有精品视频在线观看 | 九九免费观看全部免费视频 | 欧美日韩激情视频8区 | 97超碰在线久草超碰在线观看 | 激情一区二区三区欧美 | 亚洲欧美怡红院 | 干亚洲少妇 | 久久99国产精品视频 | 国产精品成人免费精品自在线观看 | 正在播放国产精品 | 久久任你操 | 69国产盗摄一区二区三区五区 | 青青河边草观看完整版高清 | 91亚洲国产成人久久精品网站 | 国产伦精品一区二区三区无广告 | 国产 欧美 日产久久 | 久久精久久精 | 亚洲高清免费在线 | 久久久久久国产精品久久 | 亚洲国产中文字幕在线视频综合 | 亚洲精品黄色在线观看 | 人人爱人人添 | 91精品国产91久久久久 | 激情在线免费视频 | 国产中文字幕视频在线观看 | 黄av资源| 99色在线观看视频 | 欧美在线观看视频 | 在线免费av观看 | 精品国产成人 | 亚洲黄色在线免费观看 | 精品一区二区三区在线播放 | 午夜精品久久久久久久99热影院 | 国产精品国产三级国产aⅴ无密码 | 亚洲精品国产拍在线 | 久久公开视频 | 国产综合视频在线观看 | 在线观看黄网站 | 人人看人人草 | 黄免费网站 | 日本黄色免费网站 | 亚洲精品乱码白浆高清久久久久久 | 成人啪啪18免费游戏链接 | 国产打女人屁股调教97 | av不卡中文字幕 | 在线免费色视频 | 亚洲日本韩国一区二区 | 国产午夜麻豆影院在线观看 | 97视频在线免费观看 | 亚洲免费小视频 | 亚洲一一在线 | 国内综合精品午夜久久资源 | 亚洲爱爱视频 | 久久久精品国产免费观看一区二区 | 久久久久久久久久久久久久电影 | 久久久久久久免费 | 国产精品国产三级国产不产一地 | 久久免费视频观看 | 久久精品人人做人人综合老师 | 天天色天天射综合网 | 日韩女同一区二区三区在线观看 | 在线播放 亚洲 | 美女网站免费福利视频 | 探花视频在线观看免费 | 国产在线观看地址 | 丁香五婷| 中文字幕在线观看完整 | 91在线观看黄 | 亚洲国产精品成人va在线观看 | 夜夜嗨av色一区二区不卡 | 国色天香第二季 | 日韩欧美综合视频 | 国产精品久久在线观看 | 日韩国产精品一区 | 人人澡澡人人 | 国产高清免费观看 | 麻豆91精品91久久久 | 国产一区电影在线观看 | 99精品视频精品精品视频 | 欧美一二区视频 | 五月婷婷操 | 欧美精品一区二区性色 | 成人av观看| 91在线最新 | 500部大龄熟乱视频使用方法 | 免费在线观看av不卡 | 亚洲黄色小说网 | 丝袜护士aⅴ在线白丝护士 天天综合精品 | 去干成人网 | 麻花传媒mv免费观看 | 国产黄色片免费在线观看 | 国产淫片免费看 | 日日夜精品 | 日韩精品中文字幕在线播放 | 免费成人av网站 | 九九免费在线观看视频 | 亚洲精品一区二区18漫画 | 成片人卡1卡2卡3手机免费看 | 精品一二三区视频 | 91视视频在线直接观看在线看网页在线看 | 国产91精品在线播放 | 免费看的黄色的网站 | 久草在线免费电影 | 久久国产精品99久久人人澡 | 色狠狠干| 日韩理论电影在线 | 精品免费视频 | 在线观看国产永久免费视频 | 有码中文字幕在线观看 | 成人黄色资源 | 国内精品亚洲 | 在线亚洲高清视频 | 免费网站在线观看人 | 91精品国产99久久久久久久 | av免费网站在线观看 | 日韩综合一区二区 | 中文字幕久久精品一区 | 日韩欧美综合 | 免费一级片在线观看 | 日精品| 国产精品久久久久久99 | 国产精品男女啪啪 | 日本黄色免费电影网站 | 在线成人免费 | av福利资源 | 精品在线观看视频 | 国产v欧美 | 亚洲精品视频偷拍 | 天天插天天狠天天透 | 日本久久久久久久久久久 | 色成人亚洲网 | 视频一区在线播放 | 美女国产在线 | 国产精品久久久777 成人手机在线视频 | 久久久久亚洲精品中文字幕 | 东方av免费在线观看 | 久久综合给合久久狠狠色 | 亚洲精品88欧美一区二区 | 狠狠操.com | 欧美一级电影在线观看 | 亚洲黄色app | 国产网站av | 欧美日韩精品网站 | 欧美一级裸体视频 | 亚洲男人天堂2018 | 美女视频是黄的免费观看 | 国产在线日本 | 九色视频网 | 亚洲成人精品影院 | 精品视频在线免费 | 亚洲精品久久久蜜臀下载官网 | 精品一区精品二区 | 国产精品午夜av | 狠狠色丁香婷婷综合久久片 | 人人狠 | 中文字幕黄色网址 | 天天操天天曰 | 91av99| 国产.精品.日韩.另类.中文.在线.播放 | 久久精品视频网 | 成人四虎影院 | 日韩精品黄 | 久久久午夜精品理论片中文字幕 | 国产成年人av | 日本久久影视 | 美女福利视频一区二区 | 欧美网站黄色 | 天天干天天操人体 | 免费看wwwwwwwwwww的视频 久久久久久99精品 91中文字幕视频 | 亚洲精品资源 | 国产在线高清 | 天天摸天天舔天天操 | 欧美地下肉体性派对 | 超碰在线1 | www.五月婷婷| 中文国产成人精品久久一 | 九九爱免费视频 | 99久久精品免费看国产免费软件 | 国产a高清| 99亚洲精品在线 | 久久美女电影 | 五月激情婷婷丁香 | 91夫妻视频| 免费黄色一区 | 国产xx视频 | 国产又粗又猛又黄又爽的视频 | 免费久草视频 | 亚洲精品看片 | 中文字幕日韩精品有码视频 | 中文字幕精品视频 | 亚洲黄色一级大片 | 国产精品免费麻豆入口 | 久久久久久久久国产 | 婷婷久久综合网 | 精品产品国产在线不卡 | 国产成人精品一区二区三区免费 | 日韩电影一区二区三区在线观看 | 久草久草在线观看 | 欧美作爱视频 | 国产又粗又猛又爽又黄的视频先 | 福利一区视频 | www.com在线观看 | 国产高清在线不卡 | 久久三级视频 | 在线观看小视频 | 91精品视频网站 | 美女视频久久久 | 天天摸天天操天天舔 | 久久精品牌麻豆国产大山 | 久久久99精品免费观看乱色 | 久久伊人五月天 | a黄色片在线观看 | 四虎免费av| 久久久国产精品视频 | 麻豆视频免费看 | 五月婷婷网站 | 国产日产在线观看 | 播五月婷婷 | 欧美日韩在线视频观看 | 成人免费观看大片 | 久久国产免费看 | 狠狠久久伊人 | www.久久久精品 | 在线播放 日韩专区 | 久久精品一区八戒影视 | 69欧美视频| 亚洲一二三区精品 | 美女福利视频 | 欧美日韩一区久久 | 午夜精品久久久久久久久久久 | 日日爽| 免费视频xnxx com | 久久国产露脸精品国产 | 国产美女免费 | 国产裸体永久免费视频网站 | 在线免费观看国产精品 | 婷婷色av | 日韩av中文字幕在线 | 97福利在线 | 97人人澡人人添人人爽超碰 | 国产中文字幕在线 | 久久精品免费 | aⅴ精品av导航 | 久久伊人国产精品 | 999久久国产精品免费观看网站 | 激情av资源网 | 99精品视频在线观看 | 中文字幕美女免费在线 | www日韩欧美 | 国产精品一级视频 | 日韩字幕 | 91在线精品视频 | 四虎影视成人永久免费观看亚洲欧美 | 色综合久久精品 | 日韩黄色av网站 | 欧美亚洲精品一区 | 美女在线免费观看视频 | 中文字幕在线观看完整版 | 免费看毛片在线 | 色噜噜在线观看 | 亚洲激情 欧美激情 | 国产黄色精品在线观看 | 91香蕉视频720p | 久久这里只有精品9 | 久久99国产精品久久99 | 成人亚洲网 | 午夜视频在线观看一区二区 | 一区二区三区久久精品 | 西西4444www大胆视频 | 国产精品久久久久国产精品日日 | 丁香视频| av解说在线观看 | 成人一级| av在观看| 青青河边草免费观看 | 成人免费观看视频大全 | 日韩在线第一区 | av片一区二区 | 欧美性大胆 | 久久99久久99久久 | 91网在线观看 | 99久久综合狠狠综合久久 | 97精品免费视频 | 国产精品6999成人免费视频 | 亚洲在线色| 色射爱 | 久久成人免费视频 | 天天插一插 | 免费观看国产成人 | 免费a网站 | 日韩在线视 | 天天爱天天干天天爽 |