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

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

WCF后续之旅(11): 关于并发、回调的线程关联性(Thread Affinity)

發(fā)布時(shí)間:2023/12/9 编程问答 40 豆豆
生活随笔 收集整理的這篇文章主要介紹了 WCF后续之旅(11): 关于并发、回调的线程关联性(Thread Affinity) 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

對(duì)于一般的多線程操作,比如異步地進(jìn)行基于文件系統(tǒng)的IO操作;異步地調(diào)用Web Service;或者是異步地進(jìn)行數(shù)據(jù)庫訪問等等,是和具體的線程無關(guān)的。也就是說,對(duì)于這些操作,任意創(chuàng)建一個(gè)新的線程來執(zhí)行都是等效的。但是有些情況下,有些操作卻只能在固定的線程下執(zhí)行。比如,在GUI應(yīng)用下,對(duì)控件的訪問就需要在創(chuàng)建該控件的線程下執(zhí)行;或者我們?cè)谀硞€(gè)固定的線程中通過TLS(Thread Local Storage)設(shè)置了一些Context信息,供具體的操作使用,我們把操作和某個(gè)固定的線程的依賴稱為線程關(guān)聯(lián)性(Thread Affinity)。在這種情況下,我們的異步操作就需要被Marshal到固定的線程執(zhí)行。在WCF并發(fā)或者Callback的情況下也具有這樣的基于線程關(guān)聯(lián)性的問題。

一、從基于Windows Application客戶端的WCF回調(diào)失敗談起

在"我的WCF之旅"系列文章中,有一篇(WinForm Application中調(diào)用Duplex Service出現(xiàn)TimeoutException的原因和解決方案)專門介紹在一個(gè)Windows Application客戶端應(yīng)用, 通過WCF 的Duplex通信方式進(jìn)行回調(diào)失敗的文章.我們今天以此作為出發(fā)點(diǎn)介紹WCF在Thread Affinity下的表現(xiàn)和解決方案.

我們來創(chuàng)建一個(gè)WCF的應(yīng)用來模擬該場景: 客戶端是一個(gè)基于Windows Form應(yīng)用, 完成一個(gè)計(jì)算器的功能, 用戶輸入操作數(shù),點(diǎn)擊"計(jì)算"按鈕, 后臺(tái)通過調(diào)用WCF service, 并傳遞一個(gè)用于顯示計(jì)算結(jié)果的Callback對(duì)象; service進(jìn)行相應(yīng)的計(jì)算得到最后的運(yùn)算結(jié)果,調(diào)用該Callback對(duì)象將運(yùn)算結(jié)果顯示到客戶端界面.這是我們的WCF四層結(jié)構(gòu):

1、Contract:ICalculate & ICalculateCallback

1: namespace Artech.ThreadAffinity.Contracts 2: { 3: [ServiceContract(CallbackContract = typeof(ICalculateCallback))] 4: public interface ICalculate 5: { 6: [OperationContract] 7: void Add(double op1, double op2); 8: } 9: }

這是Service Contract,下面是Callback Contract,用于顯示運(yùn)算結(jié)果:

1: namespace Artech.ThreadAffinity.Contracts 2: { 3: public interface ICalculateCallback 4: { 5: [OperationContract] 6: void DisplayResult(double result); 7: } 8: }

2、Service:CalculateService

1: namespace Artech.ThreadAffinity.Services 2: { 3: [ServiceBehavior(ConcurrencyMode = ConcurrencyMode.Reentrant)] 4: public class CalculateService:ICalculate 5: { 6: public static ListBox DisplayPanel 7: { get; set; } 8:? 9: #region ICalculate Members 10:? 11: public void Add(double op1, double op2) 12: { 13: double result = op1 + op2; 14: ICalculateCallback callback = OperationContext.Current.GetCallbackChannel<ICalculateCallback>(); 15:? 16: DisplayPanel.Items.Add(string.Format("{0} + {1} = {2}", op1, op2, result)); 17:? 18: callback.DisplayResult(result); 19: } 20:? 21: #endregion 22: } 23: }


由于需要進(jìn)行callback, 我們把ConcurrencyMode 設(shè)為Reentrant。當(dāng)?shù)玫竭\(yùn)算的結(jié)果后,通過OperationContext.Current.GetCallbackChannel得到callback對(duì)象,并調(diào)用之。還有一點(diǎn)需要提的是,該service是通過一個(gè)Windows Form application進(jìn)行host的。并且有一個(gè)ListBox列出所有service執(zhí)行的結(jié)果,就像這樣:

3、Hosting

Hosting的代碼寫在Form的Load事件中:

1: private void HostForm_Load(object sender, EventArgs e) 2: { 3: this._serviceHost = new ServiceHost(typeof(CalculateService)); 4: CalculateService.DisplayPanel = this.listBoxResult; 5: CalculateService.SynchronizationContext = SynchronizationContext.Current; 6: this._serviceHost.Opened += delegate 7: { 8: this.Text = "The calculate service has been started up!"; 9: }; 10:? 11: this._serviceHost.Open(); 12: }

我們注意到了CalculateService使用到的用于顯示所有預(yù)算結(jié)果的ListBox就是在這了通過static property傳遞的。

這么配置文件

1: <configuration> 2: <system.serviceModel> 3: <services> 4: <service name="Artech.ThreadAffinity.Services.CalculateService"> 5: <endpoint binding="netTcpBinding" bindingConfiguration="" contract="Artech.ThreadAffinity.Contracts.ICalculate" /> 6: <host> 7: <baseAddresses> 8: <add baseAddress="net.tcp://127.0.0.1:8888/calculateservice" /> 9: </baseAddresses> 10: </host> 11: </service> 12: </services> 13: </system.serviceModel> 14: </configuration>

4、Client

Client的界面很簡單:輸入兩個(gè)操作數(shù),點(diǎn)擊“=”按鈕,將運(yùn)算結(jié)果顯示出來。

先來看看client端對(duì)callback contract的實(shí)現(xiàn):

1: namespace Clients 2: { 3: public class CalculateCallback : ICalculateCallback 4: { 5: public static TextBox ResultPanel; 6:? 7: #region ICalculateCallback Members 8:? 9: public void DisplayResult(double result) 10: { 11: ResultPanel.Text = result.ToString(); 12: } 13:? 14: #endregion 15: } 16: }

這是配置:

1: <configuration> 2: <system.serviceModel> 3: <client> 4: <endpoint address="net.tcp://127.0.0.1:8888/calculateservice" 5: binding="netTcpBinding" bindingConfiguration="" contract="Artech.ThreadAffinity.Contracts.ICalculate" 6: name="calculateservice" /> 7: </client> 8: </system.serviceModel> 9: </configuration> 然后是我們“=”按鈕的單擊事件對(duì)運(yùn)算的實(shí)現(xiàn): 1: private void buttonCalculate_Click(object sender, EventArgs e) 2: { 3: CalculateCallback.ResultPanel = this.textBoxResult; 4: DuplexChannelFactory<ICalculate> channelFactory = new DuplexChannelFactory<ICalculate>(new CalculateCallback(), "calculateservice"); 5: ICalculate calculator = channelFactory.CreateChannel(); 6: calculator.Add(double.Parse(this.textBoxOp1.Text), double.Parse(this.textBoxOp2.Text)); 7: }

CalculateCallback 用于顯示運(yùn)算結(jié)果的TextBox通過statis property實(shí)現(xiàn)傳遞。這個(gè)實(shí)現(xiàn)很簡單,貌似沒有什么問題,但是我們運(yùn)行程序,在客戶端就會(huì)拋出這樣的exception。可以看出是一個(gè)TimeoutException。

二、是什么導(dǎo)致TimeoutException?

我們現(xiàn)在來分析是什么導(dǎo)致了TimeoutException的拋出。原因很簡單:由于我們對(duì)service的調(diào)用的是在UI 線程調(diào)用的,所以在開始調(diào)用到最終得到結(jié)果,這個(gè)UI Thread會(huì)被鎖住;但是當(dāng)service進(jìn)行了相應(yīng)的運(yùn)算的到運(yùn)算的結(jié)果后,需要調(diào)用callback對(duì)象對(duì)client進(jìn)行回調(diào),默認(rèn)的情況下,Callback的執(zhí)行是在UI線程執(zhí)行的。當(dāng)Callback試圖執(zhí)行的時(shí)候,發(fā)現(xiàn)UI 線程被鎖,只能等待。這樣形成一個(gè)死鎖,UI線程需要等待CalculateService執(zhí)行返回后才能解鎖,而CalculateService需要Callback執(zhí)行完成;而Callback需要等到UI線程解鎖才能執(zhí)行。

基于上門的原因,我們有兩種解決方案:

  • CalculateService不必等到Callback執(zhí)行完成就返回,我們可以通過異步調(diào)用Callback。或者讓Client異步方式調(diào)用CalculateService,以便及時(shí)釋放UI線程,我們可以通過One-way的方式來進(jìn)行service的調(diào)用。
  • 讓Callback的執(zhí)行不必綁定到UI線程

三、解決方案一:通過異步調(diào)用或者One-way回調(diào)

為了簡單起見,我們通過ThreadPool實(shí)現(xiàn)了異步回調(diào):

1: public void Add(double op1, double op2) 2: { 3: double result = op1 + op2; 4: ICalculateCallback callback = OperationContext.Current.GetCallbackChannel<ICalculateCallback>(); 5:? 6: ThreadPool.QueueUserWorkItem(delegate{ callback.DisplayResult(result); }, null); 7: }

這是一種方案,另一種是將Add操作設(shè)成One-way的:

1: namespace Artech.ThreadAffinity.Contracts 2: { 3: [ServiceContract(CallbackContract = typeof(ICalculateCallback))] 4: public interface ICalculate 5: { 6: [OperationContract(IsOneWay = true)] 7: void Add(double op1, double op2); 8: } 9: }

這兩種方案都可以解決問題。

四、方案二、通過解除Callback操作和UI線程的關(guān)聯(lián)性

現(xiàn)在我們才進(jìn)入我們今天討論的主題:WCF并發(fā)操作的線程關(guān)聯(lián)性問題。在這之前,我們需要了解一個(gè)重要的對(duì)象:SynchonizationContext(System.Threading.SynchronizationContext)。SynchonizationContext就是為了解決這種線程關(guān)聯(lián)性問題而設(shè)計(jì)的。SynchonizationContext提供了兩個(gè)主要的API將操作和對(duì)應(yīng)的Thread關(guān)聯(lián):Post和Send。

1: public virtual void Post(SendOrPostCallback d, object state) 2: public virtual void Send(SendOrPostCallback d, object state)

Send和Post分別以同步和異步的方式將以Delegate表示的具體的操作和SynchonizationContext對(duì)象對(duì)應(yīng)的Thread關(guān)聯(lián),而SendOrPostCallback delegate對(duì)象代表你需要的線程關(guān)聯(lián)操作,state代表傳入delegate的參數(shù):

public delegate void SendOrPostCallback(object state);

對(duì)于某些具有線程關(guān)聯(lián)的應(yīng)用,比如Windows Form application,在程序啟動(dòng)的時(shí)候,會(huì)設(shè)置當(dāng)前的SynchonizationContext對(duì)象(Windows Form application使用的是繼承了SynchonizationContext的WindowsFormsSynchronizationContext :System.Windows.Forms.WindowsFormsSynchronizationContext)。當(dāng)前SynchonizationContext被成功初始化后,你就可以通過SynchonizationContext的靜態(tài)屬性Current得到它。在你自己的應(yīng)用中,如何有需要,你也可以自定義SynchonizationContext,并通過靜態(tài)方法SetSynchronizationContext將其設(shè)置為current SynchronizationContext。

對(duì)應(yīng)WCF來說,無論是host一個(gè)service,還是在調(diào)用service時(shí)制定callback,在默認(rèn)的情況下,service和callback的操作將自動(dòng)和當(dāng)前的SynchonizationContext進(jìn)行關(guān)聯(lián)(如何有的話)。也就是說,如過我們的service被host到Windows Form application下,那么service的操作將在UI 線程下執(zhí)行;同理,如何我們?cè)谝粋€(gè)Windows Forms UI線程下調(diào)用duplex service并制定callback,那么callback的最終執(zhí)行將在UI線程。

關(guān)于WCF對(duì)線程關(guān)聯(lián)性的控制,可以通過ServiceBehavior或者CallbackBehavior的UseSynchronizationContext屬性進(jìn)行設(shè)定,該屬性默認(rèn)為true,這正式WCF默認(rèn)具有線程關(guān)聯(lián)性的原因。

現(xiàn)在我們來實(shí)現(xiàn)我們的第二套方案:讓Callback的執(zhí)行不必綁定到UI線程。為此我們只需要加上如何的CallbackBehavior attribute就可以了。

1: namespace Artech.ThreadAffinity.Clients 2: { 3: [CallbackBehavior(UseSynchronizationContext = false)] 4: public class CalculateCallback : ICalculateCallback 5: { 6: public static TextBox ResultPanel; 7:? 8: #region ICalculateCallback Members 9:? 10: public void DisplayResult(double result) 11: { 12: ResultPanel.Text = result.ToString(); 13:? 14: } 15:? 16: #endregion 17: } 18: } 19:?

但是現(xiàn)在我們運(yùn)行我們的程序,將會(huì)出現(xiàn)如下的InvalidOperation異常:

原因很簡單,由于我們將callbaclk的UseSynchronizationContext 設(shè)置成false,那么callback的操作將不會(huì)再UI線程下執(zhí)行。但是我們需要運(yùn)算的結(jié)果輸入到UI的TextBox上,對(duì)UI上控件的操作需要在UI線程上執(zhí)行,顯然會(huì)拋出異常了。

為了我們引入SynchonizationContext到CalculateCallback中:將SynchonizationContext定義成一個(gè)static屬性,通過Post方法異步地實(shí)現(xiàn)對(duì)運(yùn)算結(jié)果的顯示。

1: namespace Artech.ThreadAffinity.Clients 2: { 3: [CallbackBehavior(UseSynchronizationContext = false)] 4: public class CalculateCallback : ICalculateCallback 5: { 6: public static TextBox ResultPanel; 7: public static SynchronizationContext SynchronizationContext; 8:? 9: #region ICalculateCallback Members 10:? 11: public void DisplayResult(double result) 12: { 13: SynchronizationContext.Post(delegate { ResultPanel.Text = result.ToString(); }, null); 14: } 15:? 16: #endregion 17: } 18: }

SynchonizationContext在調(diào)用service的時(shí)候指定:

1: private void buttonCalculate_Click(object sender, EventArgs e) 2: { 3: CalculateCallback.ResultPanel = this.textBoxResult; 4: CalculateCallback.SynchronizationContext = SynchronizationContext.Current; 5:? 6: DuplexChannelFactory<ICalculate> channelFactory = new DuplexChannelFactory<ICalculate>(new CalculateCallback(), "calculateservice"); 7: ICalculate calculator = channelFactory.CreateChannel(); 8: calculator.Add(double.Parse(this.textBoxOp1.Text), double.Parse(this.textBoxOp2.Text)); 9: }

現(xiàn)在我們程序能夠正常運(yùn)行了。

五、另一種可選方案:通過ISynchronizeInvoke的Invoke/BeginInvoke

熟悉Windows Form編程的讀者應(yīng)該都知道,WinForm空間的基類Control(System.Windows.Forms.Control)都實(shí)現(xiàn)了System.ComponentModel.ISynchronizeInvoke接口,而Control對(duì)ISynchronizeInvoke的實(shí)現(xiàn)就是為了解決Control的操作必須在創(chuàng)建Control線程的問題,ISynchronizeInvoke定義Invoke和BeginInvoke方法方面我們以同步或者異步的方式操作Control:

1: public interface ISynchronizeInvoke 2: { 3: // Methods 4: [HostProtection(SecurityAction.LinkDemand, Synchronization=true, ExternalThreading=true)] 5: IAsyncResult BeginInvoke(Delegate method, object[] args); 6: object EndInvoke(IAsyncResult result); 7: object Invoke(Delegate method, object[] args); 8:? 9: // Properties 10: bool InvokeRequired { get; } 11: } 12:?

如何我們放棄基于SynchonizationContext的解決方案,我們也可以通過基于ISynchronizeInvoke的方式來解決這個(gè)問題。為此我們這樣定義CalculateCallback:

1: namespace Artech.ThreadAffinity.Clients 2: { 3: [CallbackBehavior(UseSynchronizationContext = false)] 4: public class CalculateCallback : ICalculateCallback 5: { 6: public static TextBox ResultPanel; 7: public delegate void DisplayResultDelegate(TextBox resultPanel, double result); 8:? 9: #region ICalculateCallback Members 10:? 11: public void DisplayResult(double result) 12: { 13: DisplayResultDelegate displayResultDelegate = new DisplayResultDelegate(DisplayResult); 14: ResultPanel.BeginInvoke(displayResultDelegate, new object[] { ResultPanel, result }); 15: } 16:? 17: private void DisplayResult(TextBox resultPanel, double result) 18: { 19: resultPanel.Text = result.ToString(); 20: } 21:? 22: #endregion 23: } 24: } 25:?

由于BeginInvoke方式只能接受一個(gè)具體的delegate對(duì)象(不能使用匿名方法),所以需要定義一個(gè)具體的Delegate(DisplayResultDelegate)和對(duì)應(yīng)的方法(DisplayResult),參數(shù)通過一個(gè)object[]傳入。

從本質(zhì)上將,這兩種方式的實(shí)現(xiàn)完全是一樣的,如何你查看System.Windows.Forms.WindowsFormsSynchronizationContext的代碼,你會(huì)發(fā)現(xiàn)其Send和Post方方法就是通過調(diào)用Invoke和BeginInvoke方式實(shí)現(xiàn)的。

六、Service Hosting的線程關(guān)聯(lián)性

我們花了很多的精力介紹了WCF Duplex通信中Callback操作的線程關(guān)聯(lián)性問題,實(shí)際上我們使用到更多的還是service操作的線程關(guān)聯(lián)性問題。就以我們上面的程序?yàn)槔?#xff0c;我們通過一個(gè)Windows Form application來host我們的service,并且要求service的運(yùn)算結(jié)束后將結(jié)果輸出到server端的Window form的ListBox中,對(duì)ListBox的操作肯定需要的Host程序的UI線程中執(zhí)行。

按照我們一般的想法,我們的Service面向若干client,肯定是并發(fā)的接收client端的請(qǐng)求,以多線程的方式執(zhí)行service的操作,那么操作中UI 控件的操作肯定會(huì)出現(xiàn)錯(cuò)誤。

我們的程序依然可以正常運(yùn)行,其根本原因是WCF的service操作默認(rèn)實(shí)現(xiàn)了對(duì)Host service的當(dāng)前線程的SynchonizationContext實(shí)現(xiàn)了關(guān)聯(lián)。與Callback操作的線程關(guān)聯(lián)性通過CallbackBehavior的UseSynchronizationContext 進(jìn)行控制一樣,service的線程關(guān)聯(lián)性通過ServiceBehavir的UseSynchronizationContext 進(jìn)行設(shè)定。UseSynchronizationContext 的默認(rèn)值為true。

如何我們將CalculateService的UseSynchronizationContext 設(shè)為false:

1: namespace Artech.ThreadAffinity.Services 2: { 3: [ServiceBehavior(ConcurrencyMode = ConcurrencyMode.Reentrant,UseSynchronizationContext = false)] 4: public class CalculateService:ICalculate 5: { 6: public static ListBox DisplayPanel 7: { get; set; } 8:? 9: #region ICalculate Members 10:? 11: public void Add(double op1, double op2) 12: { 13: double result = op1 + op2; 14: ICalculateCallback callback = OperationContext.Current.GetCallbackChannel<ICalculateCallback>(); 15:? 16: DisplayPanel.Items.Add(string.Format("{0} + {1} = {2}", op1, op2, result)); 17:? 18: callback.DisplayResult(result); 19: } 20:? 21: #endregion 22: } 23: } 24:?

有control被不是創(chuàng)建它的線程操作,肯定會(huì)拋出一個(gè)InvalidOperationException,就像這樣:

我們一樣可以通過SynchonizationContext或者ISynchronizeInvoke的方式來解決這樣的問題,我們只討論前面一種,為此我們改變了CalculateService的定義:通過SynchonizationContext的Post方法實(shí)現(xiàn)對(duì)ListBox的訪問。

1: namespace Artech.ThreadAffinity.Services 2: { 3: [ServiceBehavior(ConcurrencyMode = ConcurrencyMode.Reentrant,UseSynchronizationContext = false)] 4: public class CalculateService:ICalculate 5: { 6: public static ListBox DisplayPanel 7: { get; set; } 8:? 9: public static SynchronizationContext SynchronizationContext 10: { get; set; } 11:? 12: #region ICalculate Members 13:? 14: public void Add(double op1, double op2) 15: { 16: double result = op1 + op2; 17: ICalculateCallback callback = OperationContext.Current.GetCallbackChannel<ICalculateCallback>(); 18: SynchronizationContext.Post(delegate 19: { 20: DisplayPanel.Items.Add(string.Format("{0} + {1} = {2}", op1, op2, result)); 21: }, null); 22:? 23: callback.DisplayResult(result); 24: } 25:? 26: #endregion 27: } 28: } 29:?

通過static屬性定義的SynchonizationContext在host的時(shí)候指定:

1: private void HostForm_Load(object sender, EventArgs e) 2: { 3: this._serviceHost = new ServiceHost(typeof(CalculateService)); 4: CalculateService.DisplayPanel = this.listBoxResult; 5: CalculateService.SynchronizationContext = SynchronizationContext.Current; 6: this._serviceHost.Opened += delegate 7: { 8: this.Text = "The calculate service has been started up!"; 9: }; 10:? 11: this._serviceHost.Open(); 12: } 13:?

這樣我們的程序又可以正常運(yùn)行了。

WCF后續(xù)之旅:
WCF后續(xù)之旅(1): WCF是如何通過Binding進(jìn)行通信的
WCF后續(xù)之旅(2): 如何對(duì)Channel Layer進(jìn)行擴(kuò)展——?jiǎng)?chuàng)建自定義Channel
WCF后續(xù)之旅(3): WCF Service Mode Layer 的中樞—Dispatcher
WCF后續(xù)之旅(4):WCF Extension Point 概覽
WCF后續(xù)之旅(5): 通過WCF Extension實(shí)現(xiàn)Localization
WCF后續(xù)之旅(6): 通過WCF Extension實(shí)現(xiàn)Context信息的傳遞
WCF后續(xù)之旅(7):通過WCF Extension實(shí)現(xiàn)和Enterprise Library Unity Container的集成
WCF后續(xù)之旅(8):通過WCF Extension 實(shí)現(xiàn)與MS Enterprise Library Policy Injection Application Block 的集成
WCF后續(xù)之旅(9):通過WCF的雙向通信實(shí)現(xiàn)Session管理[Part I]
WCF后續(xù)之旅(9): 通過WCF雙向通信實(shí)現(xiàn)Session管理[Part II]
WCF后續(xù)之旅(10): 通過WCF Extension實(shí)現(xiàn)以對(duì)象池的方式創(chuàng)建Service Instance
WCF后續(xù)之旅(11): 關(guān)于并發(fā)、回調(diào)的線程關(guān)聯(lián)性(Thread Affinity)
WCF后續(xù)之旅(12): 線程關(guān)聯(lián)性(Thread Affinity)對(duì)WCF并發(fā)訪問的影響
WCF后續(xù)之旅(13): 創(chuàng)建一個(gè)簡單的WCF SOAP Message攔截、轉(zhuǎn)發(fā)工具[上篇]
WCF后續(xù)之旅(13):創(chuàng)建一個(gè)簡單的SOAP Message攔截、轉(zhuǎn)發(fā)工具[下篇]
WCF后續(xù)之旅(14):TCP端口共享
WCF后續(xù)之旅(15): 邏輯地址和物理地址
WCF后續(xù)之旅(16): 消息是如何分發(fā)到Endpoint的--消息篩選(Message Filter)
WCF后續(xù)之旅(17):通過tcpTracer進(jìn)行消息的路由

轉(zhuǎn)載于:https://www.cnblogs.com/artech/archive/2008/08/21/1273021.html

總結(jié)

以上是生活随笔為你收集整理的WCF后续之旅(11): 关于并发、回调的线程关联性(Thread Affinity)的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。

综合久久久久久 | 久久久精品亚洲 | 国产一区二区三区在线 | 国产成视频在线观看 | 成人动漫精品一区二区 | 国产精品一区二区免费在线观看 | 九九99视频| 欧美有色| 欧美疯狂性受xxxxx另类 | 91高清视频 | 91精品视频在线 | 91人人人 | 精品国产美女 | 国产在线看一区 | 久久久久久久久久伊人 | 98超碰在线观看 | 黄色毛片电影 | 亚洲一区二区三区毛片 | 久久久久国产a免费观看rela | 国产成人一二三 | 日本久久久久久科技有限公司 | 月下香电影 | 久久少妇| 久久99操| 香蕉视频啪啪 | 国产无套一区二区三区久久 | 欧美一区二区三区在线视频观看 | 国产无限资源在线观看 | 99久久精品免费视频 | 在线精品视频免费观看 | 亚洲综合在线一区二区三区 | 日韩黄色软件 | 国产黑丝袜在线 | 一区二区不卡视频在线观看 | 欧美视频二区 | 婷婷色5月 | www.com在线观看 | 97成人在线视频 | 中文字幕超清在线免费 | 五月丁婷婷 | 一区中文字幕 | 日本黄色一级电影 | 粉嫩aⅴ一区二区三区 | 亚洲黄色网络 | 黄色小说网站在线 | 日韩高清在线一区二区三区 | 国产在线观看你懂得 | 国产精品黄网站在线观看 | 韩国一区二区在线观看 | 国产精品久久久久久久久蜜臀 | 成人免费在线视频 | 国产三级在线播放 | 亚洲一级影院 | 久章草在线 | 国产一区二区不卡视频 | 亚洲精品国产电影 | 午夜免费电影院 | av在线播放国产 | 深爱激情五月婷婷 | 亚洲日本色 | 久久高清精品 | 国产精品乱码久久久久久1区2区 | 一级黄色免费网站 | 在线视频 成人 | 久久激情五月激情 | 91最新网址在线观看 | 婷婷久久一区二区三区 | 丁香九月婷婷 | 久久久久久久精 | 十八岁免进欧美 | 尤物九九久久国产精品的分类 | 欧美日韩中文视频 | 欧美日韩一区久久 | 国产视频 亚洲视频 | 亚洲1区在线| 欧美日韩天堂 | 精品在线视频一区二区三区 | 九七人人干 | 精品国产1区2区 | 国色天香第二季 | 欧美精品乱码久久久久久按摩 | 色99在线| 91在线视频观看免费 | 成人久久久久久久久久 | 日韩中文字幕第一页 | 91视视频在线直接观看在线看网页在线看 | 夜夜操网 | 欧美激情xxxx性bbbb | 久久精品视频观看 | 亚洲精品99久久久久久 | 狠狠色丁香婷婷综合视频 | 久久久久久久久久久影院 | 久久a级片 | 韩日精品中文字幕 | 国产中文在线播放 | 欧美日韩国产一区二区三区 | 亚洲国产一区二区精品专区 | 久久久精品免费观看 | 亚洲国产97在线精品一区 | 国产免费久久精品 | 五月婷婷中文 | 亚洲精品综合欧美二区变态 | 久久精品视频播放 | 日本一区二区三区视频在线播放 | 日日夜色 | 91少妇精拍在线播放 | 99色资源 | 日日射av | 天天操天天射天天操 | 成人永久视频 | 国产一区二区电影在线观看 | 国产精品久久久久久999 | 国产精品男女视频 | 亚洲精品高清在线 | 在线观看91精品视频 | 五月激情综合婷婷 | 国产一性一爱一乱一交 | 成人在线观看影院 | 国产精品日韩欧美 | 国产精品免费观看久久 | 亚洲精品永久免费视频 | 91av电影在线| 国产99久久九九精品免费 | 成人在线播放网站 | 毛片无卡免费无播放器 | 久久久久久久久国产 | 亚洲精品乱码久久久久久蜜桃欧美 | 欧美精品在线一区 | 欧美亚洲三级 | 国产九九九精品视频 | 欧美韩国日本在线观看 | 欧美巨乳波霸 | 夜色成人av | 日韩专区 在线 | 国产精品视频久久久 | 狠狠躁日日躁狂躁夜夜躁av | 狠狠干婷婷 | 另类五月激情 | 国产精品久久久视频 | 久久国产精品网站 | 日韩免费福利 | 日韩影片在线观看 | 激情在线免费视频 | 久久免费视频一区 | 色婷婷免费视频 | 欧美一进一出抽搐大尺度视频 | 激情网五月天 | 国产中文字幕网 | 亚洲欧洲中文日韩久久av乱码 | 超碰免费公开 | 亚洲午夜av电影 | 亚洲在线国产 | 国产99久久久国产精品免费看 | 天天干.com| 亚洲精品中文字幕在线观看 | 91精品国产三级a在线观看 | 亚洲精品看片 | 日韩大片免费在线观看 | 亚洲国产精品一区二区久久,亚洲午夜 | 天天夜夜狠狠操 | 一区二区三区www | 九九久久免费 | 婷婷视频在线播放 | 美女视频黄免费网站 | 国产精品欧美久久久久三级 | 五月天丁香亚洲 | av福利超碰网站 | 五月天久久狠狠 | 国产精品一区二区免费在线观看 | 精品超碰| 国产精品高潮呻吟久久av无 | 五月天综合色激情 | 久久专区 | 国产 字幕 制服 中文 在线 | 1024手机在线看 | 手机看片中文字幕 | 99精品成人 | 亚洲 成人 欧美 | av网站播放| 色就是色综合 | 久草在线电影网 | 亚洲精品成人av在线 | 国产精华国产精品 | 日韩中文字幕国产精品 | 麻豆视频免费观看 | 亚洲精品乱码久久久久久按摩 | 美女视频是黄的免费观看 | 国产剧情一区二区 | 久久精品一区二区国产 | 日韩二区在线播放 | 日韩福利在线观看 | 国产九色91 | 国内精品久久久久久久久久久久 | 久久伦理视频 | 亚洲天天在线日亚洲洲精 | 成人在线视频论坛 | 99视频在线免费播放 | 99精品网站 | 欧美色图亚洲图片 | 亚洲欧洲中文日韩久久av乱码 | 久久久久影视 | 亚洲精品在线观看中文字幕 | 免费av在线网 | 香蕉视频18 | 丁香六月婷 | 欧美日韩精品区 | 精品一区二区三区久久 | 日韩色爱 | 久久久久久久久久久影视 | av九九九| 天天干,夜夜操 | 99精品视频在线播放观看 | 99在线免费视频 | 日本亚洲国产 | 国产精品 日韩精品 | 成人黄色在线观看视频 | 玖玖视频免费在线 | 欧美日韩xx | 国产精品九九久久99视频 | 国产精品爽爽爽 | 丁香久久婷婷 | 色久综合 | 国内精品视频在线 | 成人黄色在线电影 | 黄色软件视频网站 | 免费看的黄色的网站 | 亚洲国产视频直播 | 免费黄色在线网址 | 美女一区网站 | 麻豆免费视频 | 中文字幕一区二区三区乱码不卡 | 国产精品无av码在线观看 | 欧美激情视频一二区 | 国产精品永久在线观看 | 免费精品国产va自在自线 | 亚洲精品午夜国产va久久成人 | 国内精品久久久久影院一蜜桃 | 最新午夜| 婷婷综合影院 | 美女在线观看av | 色综合久久久网 | 97福利社| 免费在线一区二区 | 五月婷婷操 | 免费在线观看视频一区 | 高潮久久久 | 成人在线视频观看 | 麻豆视频免费入口 | 久久1区 | 91黄色小视频 | 亚洲1级片 | 高清av免费一区中文字幕 | 色午夜影院 | 久久久久成人精品亚洲国产 | 国产精品激情偷乱一区二区∴ | 国产欧美中文字幕 | 69绿帽绿奴3pvideos | 久久手机视频 | 欧美日韩一区二区在线观看 | 日韩精品一区二区三区高清免费 | 天天操天天射天天操 | 福利视频一区二区 | 国产麻豆精品在线观看 | 亚洲欧美色婷婷 | 在线成人中文字幕 | 一区二区精品视频 | 日本三级中文字幕在线观看 | 97热久久免费频精品99 | 亚洲三级黄色 | 玖玖视频免费在线 | 国产精久久久久久久 | 特级毛片aaa | 美女视频黄网站 | 99国产在线观看 | 成人黄色电影在线观看 | 中文在线免费视频 | 日韩精品免费一线在线观看 | 欧美日韩在线观看一区 | 五月丁香 | 亚洲,播放 | 欧美一级性 | 亚洲高清在线观看视频 | 国产精品黑丝在线观看 | 精品久久一 | 亚洲码国产日韩欧美高潮在线播放 | 在线观看免费黄视频 | 亚洲手机av | 人人插人人射 | 亚洲免费国产 | 四虎免费av | 又污又黄的网站 | 日本在线成人 | 夜夜躁天天躁很躁波 | 东方av免费在线观看 | 色综合久久88色综合天天人守婷 | 黄色日视频| 免费麻豆 | 成人国产精品一区 | 久久久福利 | 久久精品资源 | 国产丝袜在线 | 国产精品网红直播 | 91成人天堂久久成人 | 国产一区二区高清 | 996久久国产精品线观看 | 国产伦理精品一区二区 | 91av视频在线观看 | 亚州成人av在线 | 久久九九影院 | 91久久一区二区 | 久久久国产一区二区三区 | 亚洲成年人在线播放 | 婷婷六月丁 | 中文字幕观看av | 国产中文在线字幕 | 又紧又大又爽精品一区二区 | 伊人资源视频在线 | 中文字幕二区三区 | 久草热久草视频 | 国产视频在线观看免费 | 在线观看视频三级 | 三级a毛片 | 久久久国产在线视频 | 黄色美女免费网站 | 六月丁香久久 | 免费aa大片 | a视频免费| 日本不卡一区二区 | 国产伦精品一区二区三区… | 欧美激情综合五月色丁香小说 | 成年人国产视频 | 国产精品va在线 | 天天插天天色 | 国产日韩欧美视频在线观看 | 精品国产一区二区三区久久久蜜臀 | 久久精品国产亚洲精品2020 | 日韩免费视频在线观看 | 婷婷新五月 | 丁香婷婷成人 | 国产精品综合久久久久 | 欧美国产在线看 | 在线 视频 一区二区 | 国产成人香蕉 | 亚洲一区二区三区91 | 不卡的av在线播放 | 欧美成人亚洲 | 国产在线一区二区三区播放 | 夜夜夜夜爽 | 黄色软件在线看 | 免费网站看av片 | 91插插影库| 国产特级毛片aaaaaa毛片 | 国产精品一区二区中文字幕 | 久久免费高清视频 | 97视频在线免费 | 国产精品av一区二区 | 婷婷激情5月天 | 成人av日韩 | 中文字幕在线观看第三页 | 久草在线免费看视频 | 国产男女无遮挡猛进猛出在线观看 | 亚洲午夜久久久综合37日本 | 美女视频黄网站 | 欧美激情第一页xxx 午夜性福利 | 国产成人免费高清 | 日韩精品中文字幕av | 久草免费在线视频 | 国产一区二区三区在线免费观看 | 丁香综合 | 午夜影院一区 | 岛国av在线不卡 | av黄色av | 精品国模一区二区三区 | 国产 精品 资源 | 九九九在线 | 99色视频在线 | 五月天久久婷婷 | 亚洲美女视频网 | 最近中文字幕国语免费av | 99视频导航| 亚洲精品男女 | 欧美日韩高清在线 | 日韩三级不卡 | 色香网| 久久免费高清视频 | 日韩国产欧美视频 | 欧女人精69xxxxxx | 国产在线高清视频 | 麻豆影视网站 | 色综合小说 | 午夜在线资源 | 91av在线看 | 成人综合日日夜夜 | 中文字幕一区在线观看视频 | 国产精品com | 久久久久久久久久网 | 日韩在线视 | 99久久婷婷国产一区二区三区 | 成x99人av在线www| 91免费视频网站在线观看 | 91视频免费播放 | 六月丁香婷婷在线 | 97超碰在线久草超碰在线观看 | 黄色av一区二区 | 国产无吗一区二区三区在线欢 | 粉嫩高清一区二区三区 | 欧美久久久影院 | 免费91麻豆精品国产自产在线观看 | 久久影院一区 | 国产字幕av| 丁香综合激情 | 一级一片免费视频 | 亚洲国产精品女人久久久 | 久草网视频在线观看 | 欧美精品亚洲二区 | 中文字幕在线观看完整 | 国产一级二级在线观看 | 中文av不卡 | 五月天亚洲激情 | 久久久久影视 | 在线精品国产 | 婷五月激情 | 天天操天天射天天舔 | 免费www视频 | 免费看网站在线 | 九九热免费在线观看 | 九九热在线播放 | av高清影院 | 美女视频国产 | 在线小视频你懂的 | 欧美激情视频一区二区三区 | 国产综合在线视频 | 中文字幕中文字幕在线中文字幕三区 | 中文字幕日韩伦理 | 日韩狠狠操 | 日本精品久久久久久 | 狠狠躁夜夜躁人人爽超碰97香蕉 | 日韩美女黄色片 | 精品成人国产 | sesese图片| 久久夜视频 | 亚洲精品乱码久久久久久蜜桃动漫 | 国产成人l区 | 日韩69av | 欧美少妇的秘密 | www.夜夜夜 | 久久这里只有精品9 | 中文字幕在线色 | 97精品欧美91久久久久久 | 亚洲精品久久久蜜桃直播 | 国产精品综合av一区二区国产馆 | 久久久久久97三级 | 五月天激情电影 | 国产五月色婷婷六月丁香视频 | 国产成人精品女人久久久 | 亚洲日韩中文字幕 | 国产精品人人做人人爽人人添 | 久久久久久久久久久免费视频 | 日本久久中文 | 亚洲更新最快 | 五月激情片 | 黄色国产区 | 7777xxxx| 天堂av影院 | 中文国产字幕在线观看 | 亚洲美女精品区人人人人 | 亚洲涩涩网站 | 在线成人短视频 | 五月天婷婷视频 | 999日韩| 成人av一区二区在线观看 | 97视频免费在线看 | 精品毛片在线 | 国产精品日韩 | 日韩在线三区 | 成人免费网站在线观看 | 久久综合激情 | 日本高清dvd | 成人av中文字幕在线观看 | 四虎成人免费观看 | 亚洲码国产日韩欧美高潮在线播放 | av无限看| 欧美日韩69 | 国产又粗又猛又黄又爽视频 | 精品视频中文字幕 | 日本中文字幕观看 | 97久久精品午夜一区二区 | av在线精品 | 九九九九精品 | 9999亚洲 | 国产高清区 | 日韩在线免费视频 | 成人在线视频在线观看 | 久草在线手机视频 | 欧美性黄网官网 | 探花视频免费观看 | 国内成人精品2018免费看 | www五月天婷婷 | 中文字幕无吗 | 在线国产观看 | 久草在线高清 | 色播五月激情五月 | 91香蕉视频污在线 | 久久久久久免费 | 91九色视频国产 | 99久久婷婷国产综合精品 | 国产精品网在线观看 | 黄色网中文字幕 | 亚洲欧美一区二区三区孕妇写真 | 亚洲有 在线 | 日韩a免费 | 久日视频| 国产视频资源在线观看 | 久久精品国产v日韩v亚洲 | 日韩av免费在线电影 | 国产高清在线看 | 久久久久久影视 | 成人在线网站观看 | 欧美日韩国产色综合一二三四 | 丰满少妇在线观看 | 在线观看aaa | 香蕉久久久久久久 | 成人精品久久久 | 久久精品—区二区三区 | 丁香婷婷久久 | 超黄视频网站 | 国产第一二区 | 国产在线观看你懂的 | 色诱亚洲精品久久久久久 | 国产一级电影免费观看 | 亚洲永久国产精品 | 欧美精品一区二区在线播放 | 最近更新中文字幕 | 97在线观 | 在线看的av网站 | 在线观看亚洲成人 | 国产综合香蕉五月婷在线 | 日韩欧美成人网 | 看片在线亚洲 | 亚洲 av网站 | 国产白浆视频 | 久久久久久久久久网站 | 91理论电影 | 手机av永久免费 | 中文字幕一区二区三区乱码在线 | 天天射天天色天天干 | 日韩在线中文字幕视频 | 久久久久久久久久久久影院 | 婷婷五月在线视频 | 久久黄色a级片 | 中文字幕乱码日本亚洲一区二区 | 综合国产视频 | 国产999精品视频 | 欧美在线视频二区 | 91视频免费网址 | 丁香六月婷婷开心婷婷网 | 91成人在线免费观看 | 超碰久热| 久久综合色婷婷 | 国色天香在线 | 97超碰在线视 | 国产亚洲精品久久久久久网站 | 狠狠干免费 | 色噜噜狠狠色综合中国 | 天天色天天上天天操 | 国产在线欧美在线 | 天天干天天干天天干天天干天天干天天干 | 69热国产视频 | 国产精品99精品 | 国产亚洲91 | 亚洲免费色 | 亚洲国产激情 | 在线播放日韩av | 91精品国产91久久久久福利 | 激情久久久久久久久久久久久久久久 | 久久一区二区免费视频 | 国产破处在线播放 | 日本视频久久久 | 少妇av片| 色在线高清 | 日本九九视频 | 天天av在线播放 | 在线一区观看 | 久久久久久久久久久久电影 | 2019天天干天天色 | 日韩免费一区二区在线观看 | 国产精品毛片一区二区 | 韩日三级av | 日韩区在线观看 | 国产一级淫片免费看 | 手机看片福利 | 91网免费观看 | 欧美a级一区二区 | 在线成人国产 | 日本久久久精品视频 | 五月天综合色激情 | 亚洲一区免费在线 | 久久久免费看片 | 成人禁用看黄a在线 | 国产精品99久久久久人中文网介绍 | 青青草国产免费 | 在线视频 你懂得 | 视频一区视频二区在线观看 | 免费成人结看片 | 色欧美日韩 | 国产精选视频 | 一区二区三区免费在线观看视频 | 狠狠色狠狠色综合系列 | 欧美日韩免费一区二区三区 | 美女久久久久久久久久 | 成人一级电影在线观看 | 国产黄大片 | 久久精品网站免费观看 | 成人精品电影 | 一级黄色片在线免费观看 | 成人四虎| 在线观影网站 | av网站大全免费 | 男女男视频 | 免费在线观看国产黄 | 91成人免费在线 | 久久视频精品在线观看 | 亚洲精品综合在线 | 在线视频18在线视频4k | 日韩视频一二三区 | 福利在线看片 | 国产高清精品在线观看 | 国产精品日韩久久久久 | 国产精品一区欧美 | www,黄视频| 国产高清无线码2021 | 国内小视频 | 国产精品美女久久 | av成人在线电影 | 最近最新中文字幕视频 | 欧美在线视频日韩 | 福利视频导航网址 | 国产精品 美女 | 久久电影国产免费久久电影 | 91av成人| 中日韩在线视频 | 日韩精品一区二区不卡 | 亚州成人av在线 | 五月婷在线播放 | 日韩欧美v| 久久久精品一区二区 | 国产手机av在线 | 99九九99九九九视频精品 | 免费av高清 | 99riav1国产精品视频 | 久久婷亚洲五月一区天天躁 | 久久兔费看a级 | 成人亚洲网| 最近中文字幕免费观看 | 亚洲人av免费网站 | 国产字幕在线看 | www欧美xxxx| 日韩中文字幕在线 | 国产成人黄色片 | 中文字幕亚洲高清 | 爱色av.com| 欧美一区日韩一区 | 久草网站在线观看 | www.色五月.com | 久草国产在线观看 | 国产一区二区三区在线 | 一级特黄av| 丁香在线观看完整电影视频 | 亚洲精品综合一二三区在线观看 | 欧美精品一区二区免费 | 在线观看一区视频 | 成人理论在线观看 | 午夜美女视频 | 国内精品久久天天躁人人爽 | 91精品国产91久久久久久三级 | 日韩丝袜视频 | 久久免费视频观看 | jizz999| 一二区av | 特级a老妇做爰全过程 | 色丁香婷婷 | 成人av在线电影 | 国产v视频 | 免费观看9x视频网站在线观看 | 国产区免费在线 | 国产aa免费视频 | 99免在线观看免费视频高清 | 国产高清在线免费视频 | 亚洲免费视频观看 | 免费看片网址 | 精品99在线视频 | 人人爽人人澡人人添人人人人 | 久久久99精品免费观看乱色 | 深爱激情五月网 | 国产精品综合久久久久 | 亚洲高清在线观看视频 | 伊人五月 | 91亚色视频在线观看 | 国产黄色片久久 | 精品国内自产拍在线观看视频 | 96视频免费在线观看 | 日日爽天天爽 | 亚洲精品免费播放 | 综合久久久久久久 | 一级片免费观看视频 | 9999亚洲 | 久久精品中文字幕一区二区三区 | 九色porny真实丨国产18 | 69绿帽绿奴3pvideos | 尤物一区二区三区 | 色噜噜在线观看 | 日韩中文字幕网站 | 五月婷婷六月丁香激情 | 狠狠色丁香久久婷婷综合丁香 | 欧美日韩亚洲第一页 | 超碰人人做 | 黄色网www| 国产成人精品一区一区一区 | 亚洲人人精品 | 婷婷久久久 | 在线免费观看av网站 | 99视频播放| 99久久毛片| 久久精品99国产精品酒店日本 | 91最新在线 | 在线一区二区三区 | 色综合夜色一区 | 精品国产理论 | 日韩欧美视频一区二区 | 九九热精品视频在线播放 | 国产精品一区二区av | 亚洲精品午夜久久久久久久 | 亚洲精品久| 国产精品成人一区二区 | 免费一级片在线观看 | 欧美特一级片 | 97在线影院| 97视频在线看 | 91chinesexxx| 色噜噜在线观看视频 | 久久久久久高潮国产精品视 | 久久字幕精品一区 | 69精品| 激情小说久久 | 丁香花中文在线免费观看 | 99爱在线观看 | 最新99热 | 91.麻豆视频| 成年人在线免费看片 | 五月婷婷久 | 国产精品电影一区 | 国产成人精品午夜在线播放 | 国产精品久久久久久69 | 国产精品video爽爽爽爽 | 在线免费观看黄 | 色播六月天| 国产精品va最新国产精品视频 | 国产成人一区二区在线观看 | 69精品在线| 午夜精品视频一区二区三区在线看 | 又黄又爽的免费高潮视频 | 日本中文乱码卡一卡二新区 | 一区二区在线不卡 | 国产中文在线字幕 | 在线观看岛国片 | 九九久久视频 | wwwww.国产| 不卡国产视频 | 欧美十八 | 欧美a免费| 久久不卡电影 | 国产超碰97 | 99热最新精品 | 欧美尹人 | 国产美腿白丝袜足在线av | 国产视 | 亚洲视频1 | 在线观看免费av网站 | 久久久久久久av | 天天色天天爱天天射综合 | 欧美激情视频一二区 | 久香蕉 | 午夜视频在线观看网站 | 免费男女羞羞的视频网站中文字幕 | 精品在线播放视频 | 九九热免费观看 | 成人在线播放av | 成人国产精品免费 | 中文字幕亚洲欧美 | 成人中文字幕+乱码+中文字幕 | 99热这里只有精品1 av中文字幕日韩 | a视频在线看 | 成人黄色毛片视频 | 色偷偷网站视频 | 日韩区欠美精品av视频 | 欧美一级高清片 | 97超碰人人澡人人 | 国产在线a不卡 | 99精品色 | 久久久黄色免费网站 | 久久成人国产精品入口 | 日韩精品一卡 | 国产不卡精品 | 久久精品中文字幕免费mv | 亚洲精品国产精品国自产观看浪潮 | 久久伊人婷婷 | 成人亚洲网 | 成人影音在线 | 中文字幕中文字幕在线中文字幕三区 | 国产精品va在线观看入 | 久久久九九 | 精品国产一区二区在线 | av中文字幕免费在线观看 | 欧美91av| 国产视频高清 | 亚洲福利精品 | 91人人爱 | 国产综合小视频 | 日韩免费三级 | 精品一区二区三区在线播放 | 国产在线观看黄 | 国产99久久精品一区二区300 | 九九欧美 | 草免费视频 | 免费观看www视频 | a电影免费看 | 毛片3| 久久久久北条麻妃免费看 | 久久草在线精品 | 97超碰人人澡人人爱 | 亚洲精品88欧美一区二区 | 麻豆传媒在线免费看 | 欧美精品一区二区三区四区在线 | 久久久久免费精品国产 | avsex| 超碰在线人人艹 | a级片韩国 | 欧美日韩裸体免费视频 | 午夜的福利 | 美女福利视频网 | 国产精品美乳一区二区免费 | 99精品小视频 | 欧美日韩伦理在线 | 国产精品电影一区 | 二区在线播放 | 日韩免费高清在线 | 热久久影视 | 黄色av一区二区三区 | 婷婷六月在线 | 丁香五月缴情综合网 | 国产日韩欧美在线观看 | 日本中文字幕在线一区 | 久久久国产精品免费 | 欧美另类成人 | 99久久久国产精品免费99 | 成人免费一区二区三区在线观看 | 成年人免费在线 | 成人黄色小说视频 | 91九色在线视频 | 中文字幕国产在线 | 最近中文字幕高清字幕在线视频 | 欧美一区二区三区在线观看 | 精品一二三四五区 | 最新精品视频在线 | 久久久久久久久国产 | 一区二区视频播放 | 天堂在线一区二区三区 | 毛片.com | 亚洲专区一二三 | 黄色一级在线视频 | 色综合久久天天 | 国产精品一区二区三区视频免费 | 中文字幕在线观看不卡 | 久久综合影音 | 日本黄色a级大片 | 午夜av在线 | 久草在线视频精品 | 91av在线电影 | 91成人免费观看视频 | 欧美性大战久久久久 | 伊人婷婷久久 | 日本中文字幕在线电影 | 亚洲综合色站 | 久久国产精品免费看 | 中文字幕三区 | 久久久久国产精品厨房 | 激情亚洲综合在线 | 在线观看黄网 | 91九色网站| 欧美性精品 | 国产成人精品一区在线 | 色噜噜在线观看视频 | 91麻豆精品国产91久久久无需广告 | 国产精品成人一区二区三区 | av中文字幕电影 | 日韩精品视频在线观看免费 | 色视频网站在线 | 三级黄色网络 | 不卡av免费在线观看 | 在线a视频免费观看 | 成人午夜片av在线看 | 在线免费试看 | 国产免费又爽又刺激在线观看 | 久久午夜鲁丝片 | 国产 在线观看 | av看片在线 | 亚洲精品美女久久久久 | 四虎永久免费网站 | 亚洲精品国产第一综合99久久 | 国产专区免费 | 久草精品电影 | 免费视频三区 | 国产99久久久国产精品免费看 | 久久伊人爱 | 亚洲成年片 | 久草国产在线观看 | 91精品在线看 | 日本久久电影网 | 亚洲欧美日韩一二三区 | 亚洲国产精品成人女人久久 | 中文字幕免费不卡视频 | 最新av免费| 色综久久| 午夜婷婷综合 | 中文字幕免费观看 | 综合色中文 | 精品二区视频 | 亚洲成年人免费网站 | 亚洲精品国产第一综合99久久 | 久久久免费播放 | 丁香婷婷久久久综合精品国产 | 国产a视频免费观看 | 久久欧美综合 | www.888av| 欧美一级片免费 | 蜜臀av性久久久久蜜臀aⅴ涩爱 | 黄色aa久久 | 99草在线视频 | www.伊人网| 亚洲五月婷 | 国产视频一区二区在线观看 | 探花视频在线版播放免费观看 | 欧美一区二区视频97 | 免费在线国产精品 | 一区在线免费观看 | 韩国av一区二区三区在线观看 | av大全在线看 | 亚洲天堂网视频在线观看 | 天堂av网址 | 久久国色夜色精品国产 | 在线免费观看的av网站 | 久久在视频 | 日韩在线观看网站 | 久久在线观看视频 | 一区二区三区电影在线播 | 97超碰成人| 激情五月婷婷激情 | 久草网视频在线观看 | 免费在线观看日韩 | www.99热精品 | zzijzzij亚洲日本少妇熟睡 | 欧美日韩大片在线观看 | 久久久国产一区二区三区四区小说 | 国精产品999国精产品视频 | 久久免费公开视频 | 五月天色婷婷丁香 | 91丨精品丨蝌蚪丨白丝jk | 色综合久久综合网 | www.夜夜操.com | 丁香六月国产 | 亚洲精品国偷拍自产在线观看蜜桃 | 蜜臀av夜夜澡人人爽人人桃色 | 国产免费三级在线观看 | 最近免费在线观看 | 欧洲精品码一区二区三区免费看 | 在线视频1卡二卡三卡 | 婷婷伊人五月 | 91成熟丰满女人少妇 | 久草视频在线免费播放 | 成人免费视频免费观看 | 超碰97国产 | 免费观看mv大片高清 | 中文字幕人成人 | 黄色一级在线免费观看 | 色搞搞 | 亚洲做受高潮欧美裸体 | 免费特级黄色片 | www久久精品 | 午夜av在线播放 | 亚洲伦理一区 | 久久精品一级片 | 日韩av电影免费观看 | 日本黄色免费电影网站 | 国产做爰视频 | 久久综合久久综合久久 | av电影在线免费观看 | 国产精品久久99综合免费观看尤物 | 不卡的av在线播放 |