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

P2PMessageQueue的實際用法

開發 后端
本文介紹如何使用P2PMessageQueue(點對點消息隊列)。您將看到使用 P2PMessageQueue 類和相關類型的示例。

使用 P2PMessageQueue

本部分,您將看到使用 P2PMessageQueue 類和相關類型的示例。

注 當運行該示例時,可以選擇部署到 Windows CE 或 Pocket PC 2003 模擬器或設備。您可以在不進行修改的情況下在任一個平臺上調試該項目(并運行該應用程序)。運行示例時,看到的第一個屏幕提示您在閱讀器進程和發送器進程間進行選擇。無論選擇哪一個,都必須再次運行 .exe 文件(從 Program Files),然后選擇另一個選項。在 Pocket PC 平臺上,無論是使用模擬器還是設備,都必須重命名 .exe 文件(否則將激活現有的運行中應用程序)。

字符串的簡單 IPC 交換

首先使用托管進程將字符串傳入另一個 .NET Compact Framework 應用程序(也可以使發送方或接收方成為本機應用程序。有三種不同的方法用來讀取接收端的字符串(相同的原理也適用于發送端):阻塞、非阻塞以及事件驅動。

發送方和接收方的圖形用戶界面 (GUI) 在功能方面是自描述性的,如圖 3、4 和 5 所示。

 主窗體

圖 3. 主窗體

讀取端 

圖 4. 讀取端

當發送方單擊 Send 按鈕時,發送一個字符串(如文本框中輸入的),并可以選擇將該消息設置為警告消息(基于 Message Is Alert 復選框狀態)。發送方會阻塞,直到針對指定超時發送該消息(作為 combobox 中選擇的發送方)。位于該復選框下面的窗體底部顯示 Send 方法的返回結果,如圖 5 所示(即 OK)。

 發送 / 編寫端

圖 5. 發送 / 編寫端

這里再次使用了下載示例中的 Send 方法。

  1. private void cmdSend_Click(object sender, System.EventArgs e) {  
  2. Message msg;  
  3.  
  4. msg = new Message(  
  5. System.Text.Encoding.ASCII.GetBytes(txtSend.Text),   
  6. chkIsAlert.Checked);  
  7.  
  8.     ReadWriteResult rwr = mQue.Send(msg, mTimeout);  
  9.     lblSendResult.Text = rwr.ToString();  
  10. }  
  11.  

當閱讀器收到一個消息后,會將它顯示在列表視圖(第三列)中,并指出它是否是警告消息(第二列)。當成功接收到該消息時,第一列將始終顯示 OK。默認情況下,要接收一個消息,請單擊 Receive 按鈕;如果沒有消息要接收或者方法失敗,則列表視圖的第一列將指出原因(另兩列在該情形中不適用)。

在讀取和發送時,Queue Info 菜單(單擊 Info,然后單擊 Queue Info)會顯示有關隊列的數據。接收端上的 Mode 菜單(單擊 Read,然后單擊 Mode)有三個菜單項:On Demand Only、Event driven 和 Block a Thread。這些項用于配置該程序如何接收隊列外的消息。當您選擇一個模式后,它在示例應用程序的生命周期內不應該更改(開發人員可針對自己的設計進行混合與匹配)。以下幾個小節描述三種讀取模式。

按命令讀(對應于菜單 On Demand Only )

當接收方單擊 Receive 按鈕時,將執行以下方法。

  1. private void cmdReceive_Click(object sender, System.EventArgs e) {  
  2.     Message msg;  
  3.     msg = new Message();  
  4.  
  5.     // mTimeout is set by the end user by means of the GUI   
  6.     // to DON'T BLOCK (0), BLOCK (-1), or a real timeout value  
  7.     ReadWriteResult rwr = mQue.Receive(ref msg, mTimeout);  
  8.  
  9.     ListViewItem lvi;  
  10. if (rwr == ReadWriteResult.OK){   
  11.     bool isAlrt;  
  12.         string payload;  
  13.         isAlrt = msg.IsAlert;  
  14.  
  15.         byte[] bytes = msg.MessageBytes;  
  16.         payload = System.Text.Encoding.ASCII.GetString(  
  17.                 bytes, 0, bytes.GetLength(0));  
  18.  
  19.         lvi = new ListViewItem(  
  20.                 new string[]{rwr.ToString(), isAlrt.ToString(), payload});  
  21. }else{        
  22.         lvi = new ListViewItem(  
  23.                 new string[]{rwr.ToString(), @"n\a", @"n\a"});  
  24.     }  
  25.         listView1.Items.Add(lvi);  
  26.         listView1.Columns[2].Width = -2;}  
  27.  

事件驅動

事件驅動模型基本上意味著應用程序不會在任意時刻通過調用 Receive(例如,在計時器上或者要求用戶單擊 Receive 按鈕)來輪詢新消息,相反,應用程序會訂閱并捕獲來自 P2PMessageQueue 類的事件。要訂閱事件,需要使用正規的 .NET Compact Framework 委托習語(隊列的創建也不例外)。

  1. mQue = new P2PMessageQueue(  
  2.     isReader, txtQueueName.Text, maxL, maxM, out firstTime);  
  3. mQue.DataOnQueueChanged += new EventHandler(mQue_DataOnQueueChanged);  

引發該事件會調用方法,在本例中,只調用現有的接收方法。

  1. private void mQue_DataOnQueueChanged(object sender, EventArgs e) {  
  2.     this.Invoke(new EventHandler(this.cmdReceive_Click));  
  3. }  

阻塞線程

第三種從隊列進行讀取的方法是:創建一個線程,并使其阻塞以等待隊列的 Receive 方法。每次接收到消息時,應用程序都會處理它,然后再次循環回阻塞。以下是一些帶有解釋的示例代碼。

您會在某個地方創建并啟動以下線程。

  1. Thread t = new Thread(new ThreadStart(ThreadBlockedOnRead));  
  2. t.Start();  

該線程用下面的方法運行。(有關更多上下文,請下載代碼)。

  1. private void ThreadBlockedOnRead(){  
  2.     while (mMode == 2){ // Thread mode  
  3.         Message msg = new Message();  
  4.  
  5.         //Can actually omit a timeout for a true infinite block   
  6.         ReadWriteResult rwr = mQue.Receive(msg, 60 * 1000);  
  7.         if (rwr == ReadWriteResult.InvalidHandle || mMode != 2){  
  8.             return;  
  9.         }  
  10.                   
  11.         string body = rwr.ToString();  
  12.         if (rwr == ReadWriteResult.OK){  
  13.             byte[] bytes = msg.MessageBytes;  
  14.             string bytesAsString =   
  15. System.Text.Encoding.ASCII.GetString(  
  16. bytes, 0, bytes.GetLength(0));  
  17.             body += " | " + msg.IsAlert.ToString() + " | " + bytesAsString;  
  18.         }  
  19.  
  20.         MessageBox.Show(body, "To terminate this mode use the menu again");  
  21.     }  
  22. }      
  23.  

基本示例代碼至此結束。讀取隊列的三種方式也可以應用于通過隊列發送。當事件接收到信號時(即,隊列從已滿轉變為未滿),可進行阻塞和發送或嘗試在不進行阻塞的情況下隨時進行發送。在下一部分中,您將看到該設計如何允許隊列中的消息包含其他結構 — 而不僅僅是字符串。

注 在開發一個依賴事件信號來識別隊列從已滿轉變為未滿的應用程序時,需要在應用程序啟動時針對隊列執行一個初始寫入操作。如果不執行該初始寫入操作,則應用程序永遠不會開始寫入,因為該初始寫入操作必須經過特定地執行才能填充轉變為未滿狀態的隊列,因此,向事件發出信號以觸發針對該隊列的進一步寫入操作。

發送和接收更復雜的類型(不僅僅是字符串)

在前幾部分中,是在應用程序之間傳遞字符串,但如果可以將字符串與字節數組進行轉換,則還可以傳遞任何數據類型。因此,將該類型轉換為一個字節數組,在其中創建 Message 類,然后發送 Message。在接收端,檢索 Message,獲取字節數組,然后在其中創建該類型(例如,公開類型的 ToBytes 和 FromBytes 方法)。另一個方法是,從 Message 類繼承自己的類,并在其中實現轉換。很自然,如果您嘗試傳遞一個復雜的對象圖,則在類型與字節數組之間進行轉換會難得多。嘗試使用沒有源代碼的類型需要特別注意,因為您可能不具有對該類型的完整狀態(例如,私有成員)的訪問權,因此,可能無法準確地在類型與字節數組之間進行轉換。

出于簡單的目的,假設將一個 Int64 和一個 Boolean 從一個進程傳遞到另一個進程。將創建一個 CustomMessage 類,如下所示。

  1. public class CustomMessage : Message {  
  2.     public long TotalMemory;  
  3.     public bool AfterGC;  
  4.     public CustomMessage(){  
  5.         TotalMemory = 0;  
  6.         AfterGC = false;  
  7.     }  
  8.     public CustomMessage(long totMem, bool afterGarbCol){  
  9.         TotalMemory = totMem;  
  10.         AfterGC = afterGarbCol;  
  11.     }  
  12.     public override byte[] MessageBytes {  
  13.         get {  
  14.             byte[] b1 = BitConverter.GetBytes(TotalMemory);  
  15.             byte[] b2 = BitConverter.GetBytes(AfterGC);  
  16.  
  17.             byte[] b = new byte[9];  
  18.             Buffer.BlockCopy(b1, 0, b, 0, 8);  
  19.             Buffer.BlockCopy(b2, 0, b, 8, 1);  
  20.             return b;  
  21.         }  
  22.         set {  
  23.             TotalMemory = BitConverter.ToInt64(value, 0);  
  24.             AfterGC = BitConverter.ToBoolean(value, 8);  
  25.             base.MessageBytes = value;  
  26.         }  
  27.     }  
  28. }  

添加了兩個感興趣的字段(TotalMemory、AfterGC),重寫 MessageBytes 屬性以實現轉換(get 和 set 方法位于轉換發生的位置),然后添加一個默認的構造函數(這個參數化的構造函數是可選的)。

現在,如果要使用前面的示例,只需更改兩處地方:

發送消息時,要創建一個 CustomMessage,而不是將值賦給 TotalMemory 和 AfterGC。

  1. //msg = new Message(. . .); //Instead of this line  
  2. msg = new CustomMessage(GC.GetTotalMemory(false), false);  
  3. ReadWriteResult rwr = mQue.Send(msg, mTimeout);  

接收消息時,要創建一個 CustomMessage。

  1. //msg = new Message();  
  2. msg = new CustomMessage(); //msg still declared as Message  
  3. ReadWriteResult rwr = mQue.Receive(msg, mTimeout);  

然后,在 mQue.Receive 返回時讀取它的屬性。

  1. //byte[] bytes = msg.MessageBytes;  
  2. //payload = System.Text.Encoding.ASCII.GetString(. . .);  
  3. payload = "Total Memory = " + ((CustomMessage)msg).TotalMemory.ToString() +   
  4.                     (((CustomMessage)msg).AfterGC ? " after a GC" : " without forcing a GC");  
  5.  

【編輯推薦】

  1. 點對點消息隊列函數:用于WinCE的IPC機制
  2. ASP.NET中無Cookie會話的優點與缺點
  3. 無Cookie會話的實現
  4. ASP.NET Cookie:不是問題的問題
  5. .NET框架中的XML:XmlSerializer的內部原理
責任編輯:yangsai 來源: MSDN
相關推薦

2009-08-06 16:27:05

P2PMessageQ

2010-04-28 14:56:02

Oracle sqlp

2010-05-31 14:16:01

MySQL數學函數

2010-04-28 14:46:38

Oracle Copy

2010-05-04 12:10:08

Oracle over

2010-04-28 16:30:52

Oracle case

2010-05-07 18:52:59

Oracle rown

2010-04-29 13:31:16

Oracle Orad

2010-05-17 17:23:27

MySQL limit

2010-05-05 15:38:31

Oracle安全策略

2010-04-27 14:44:31

Oracle存儲過程

2010-04-06 08:58:27

Oracle job

2010-05-26 16:53:21

MySQL show

2010-04-29 10:41:55

2010-04-29 13:53:42

Oracle臨時表

2012-01-06 10:59:37

Nuget

2010-06-30 13:07:17

SQL Server函

2012-12-10 09:46:21

P2P云存儲Symform

2010-07-07 10:31:45

2011-04-25 13:36:26

iPad2攝像頭
點贊
收藏

51CTO技術棧公眾號

裸体裸乳免费看| 亚洲女同同性videoxma| 久久精品在线免费观看| 国产男女猛烈无遮挡91| 欧美色图亚洲视频| 色先锋久久影院av| 欧美丰满高潮xxxx喷水动漫| 成人午夜视频在线观看免费| 裸体xxxx视频在线| 精品综合久久久久久8888| 久久久之久亚州精品露出| 免费观看污网站| 欧美三级精品| 一区二区不卡在线视频 午夜欧美不卡在 | 男人的天堂久久久| 日本中文字幕在线一区| 欧美肥胖老妇做爰| 丰满人妻中伦妇伦精品app| 久久77777| 91麻豆国产精品久久| 91社区国产高清| 日韩 国产 欧美| 最新亚洲视频| 中文字幕一区二区精品| 日韩精品在线观看视频| 一区二区三区四区在线视频| 日韩一卡二卡在线| 国产精品夜夜嗨| 国产精品久久久久久久久久小说| 久久久久久久久久一区二区三区| 欧美码中文字幕在线| 日韩成人在线播放| 天天操夜夜操很很操| 国产原创一区| 欧美性猛交xxxxx水多| 喜爱夜蒲2在线| 一广人看www在线观看免费视频| 99精品黄色片免费大全| www.久久久| av中文字幕观看| 久久国产精品99久久人人澡| 国产精品久久不能| chinese国产精品| 亚洲制服少妇| 欧美一级免费视频| 羞羞影院体验区| 一本久久综合| 欧美孕妇孕交黑巨大网站| 日本天堂在线视频| 亚洲激情综合| 久久人人爽国产| 九九热国产视频| 亚洲精品日本| 26uuu另类亚洲欧美日本一| 欧美一级高潮片| 亚洲毛片在线| 97国产精品视频人人做人人爱| 久草免费在线视频观看| 国产一区亚洲| 97香蕉超级碰碰久久免费软件| 久久精品国产亚洲av麻豆色欲| 欧美日韩第一区| 久久久久久久国产精品| 国语对白一区二区| 日韩一级在线| 国产精品69久久| 中文字幕人成人乱码亚洲电影| 麻豆一区二区三| 亚洲va欧美va国产综合剧情 | 下面一进一出好爽视频| 亚洲精品久久久狠狠狠爱| 国产成人鲁色资源国产91色综| 福利视频一区二区三区| 天天插天天干天天操| 99久久精品免费看国产免费软件| 精品国产一区二区三区四区精华| 亚洲日本国产精品| 欧美国产精品中文字幕| 制服诱惑一区| 丁香花在线观看完整版电影| 亚洲国产精品久久人人爱蜜臀| 777久久久精品一区二区三区| 欧美成人免费电影| 欧美裸体bbwbbwbbw| 亚洲美女高潮久久久| 欧美丝袜足交| 中文字幕亚洲激情| 国产在线一二区| 日韩黄色免费电影| 99国产在线视频| 精品视频二区| 亚洲黄网站在线观看| 欧美亚洲另类色图| 99久久这里有精品| 亚洲精品99久久久久中文字幕| 男人天堂av电影| 综合久久亚洲| 日本精品在线视频| 精品人妻少妇嫩草av无码专区| 91女神在线视频| 一区二区视频在线播放| 免费在线小视频| 91精选在线观看| 人妻少妇精品视频一区二区三区| 久久视频国产| 97视频免费在线观看| 91久久久久国产一区二区| av激情综合网| 中文字幕成人一区| 裤袜国产欧美精品一区| 欧美一区二区三区视频在线观看| 亚洲欧美视频在线播放| 一本一道久久综合狠狠老| 日本久久久久久久久| 亚洲AV无码精品自拍| 中文字幕成人网| 鲁一鲁一鲁一鲁一色| 日韩成人精品| x99av成人免费| 久久精品99北条麻妃| 成人av免费观看| 在线观看av的网址| 欧美一级做a| 亚洲人成电影网站色…| 日韩av免费网址| 国产成人精品aa毛片| 一级二级三级欧美| japanese23hdxxxx日韩| 亚洲人挤奶视频| 精品国产网站在线观看| 黄色录像免费观看| 蜜乳av一区二区三区| 麻豆成人av| 日本在线影院| 日韩电影在线观看中文字幕| 免看一级a毛片一片成人不卡| 国模一区二区三区白浆| 一区二区视频在线播放| 欧美大片网站| 日韩在线一区二区三区免费视频| 中文字幕在线天堂| 久久久久99精品国产片| 日韩av黄色网址| 亚洲图区在线| 国产不卡av在线| 美女做暖暖视频免费在线观看全部网址91| 亚洲国产精品一区二区久久 | 成人免费高清在线观看| 日日噜噜夜夜狠狠久久丁香五月| 四虎国产精品永久在线国在线 | 六月婷婷久久| 亚洲美女尤物影院| 亚洲精品天天看| 国产嫩bbwbbw高潮| 久久精品一区二区三区不卡牛牛| 116极品美女午夜一级| 蜜桃精品wwwmitaows| 国产91色在线| 91精彩在线视频| 7777精品伊人久久久大香线蕉最新版| av在线播放中文字幕| 久久精品国产精品亚洲综合| 国产91av视频在线观看| 国产在线不卡一区二区三区| 欧美区二区三区| 日本激情一区二区| 岛国视频午夜一区免费在线观看| 18禁裸乳无遮挡啪啪无码免费| 石原莉奈在线亚洲三区| 一本色道久久综合亚洲精品婷婷| 91精品福利观看| 欧美激情性做爰免费视频| 神宫寺奈绪一区二区三区| 一本大道久久a久久精品综合| 国产午夜精品久久久久久久久| 久久国产生活片100| 人妻无码一区二区三区四区| 国产图片一区| 国产精品电影网| 成人在线直播| 精品无人国产偷自产在线| 中文字幕人妻精品一区| 一区二区三区美女视频| 不卡一区二区在线观看| 久久成人免费日本黄色| 久无码久无码av无码| 国模吧精品视频| www.av一区视频| 久久99久久99精品免观看软件| 日韩视频在线一区| 欧美视频久久久| 欧美专区日韩专区| 免费在线视频观看| 国产无遮挡一区二区三区毛片日本| 亚洲午夜精品一区| 亚洲视频二区| 国产精品一二三在线观看| 任你弄精品视频免费观看| 国产欧美日韩免费| 欧美久久天堂| 久久在线免费观看视频| 男人的天堂在线| 精品国产亚洲在线| 亚洲资源在线播放| 欧美午夜性色大片在线观看| 国产日韩欧美在线观看视频| 久久精品亚洲乱码伦伦中文| 日韩黄色一区二区| 精品一区二区日韩| 久久久久久久少妇| 99精品国产在热久久| 中国老女人av| 欧美顶级大胆免费视频| 久久综合久久久| 国产福利资源一区| 91福利视频导航| 亚洲青青久久| 国产精品激情av在线播放 | 在线成人激情| 亚洲ai欧洲av| 久久不见久久见中文字幕免费| 99国内精品久久久久久久软件| 日本免费一区二区三区等视频| 欧美亚洲国产日韩2020| 91九色国产在线播放| 欧美成人剧情片在线观看| 最新97超碰在线| 亚洲性猛交xxxxwww| 天堂中文在线8| 亚洲精品美女久久久久| 丰满熟妇人妻中文字幕| 91麻豆精品国产自产在线| 一区二区视频在线免费观看| 91电影在线观看| 一二三区免费视频| 色综合色综合色综合色综合色综合| 日本三级视频在线| 亚洲成人午夜电影| 国产亚洲欧美久久久久| 亚洲一区在线观看免费观看电影高清| 91嫩草丨国产丨精品| 亚洲三级免费观看| 91高清免费看| 亚洲美女淫视频| 国产精品老熟女一区二区| 亚洲日本在线观看| 国产稀缺精品盗摄盗拍| 亚洲欧美日韩国产成人精品影院 | 91精品一区国产高清在线gif| 亚洲欧洲日本国产| 97精品97| www.69av| 在线成人www免费观看视频| 18黄暴禁片在线观看| 亚洲激情视频| 日韩精品一区二区三区不卡| 肉肉av福利一精品导航| 激情视频免费网站| 国产综合色产在线精品| 绯色av蜜臀vs少妇| 99国产精品国产精品久久| 免费毛片视频网站| 国产精品乱子久久久久| 欧美人禽zoz0强交| 午夜天堂影视香蕉久久| 日本高清不卡码| 777色狠狠一区二区三区| 亚洲精品国产av| 精品夜色国产国偷在线| 在线免费看av| 欧美精品免费在线| 性爽视频在线| 91精品国产自产在线| 日韩一区二区三区精品| 九色91视频| 欧美hd在线| 97在线国产视频| 青青草国产成人av片免费| 日本一二三四区视频| 成人av手机在线观看| 欧美激情视频二区| 一区二区免费在线播放| 亚洲影院在线播放| 6080日韩午夜伦伦午夜伦| 熟妇人妻一区二区三区四区| 一区二区中文字幕| 黑人极品ⅴideos精品欧美棵| 欧美整片在线观看| 国产在线不卡一区二区三区| 国精产品一区二区| 色偷偷综合网| 看av免费毛片手机播放| 久久精品国产99国产| 国产精品福利导航| 国产精品超碰97尤物18| 亚洲国产成人精品激情在线| 欧美视频一区二区三区在线观看 | www亚洲欧美| 精品国产免费人成网站| 风间由美久久久| 成人精品影院| 男人和女人啪啪网站| 国产在线视频一区二区| 在线观看福利片| 亚洲午夜久久久久久久久电影院| 欧美高清69hd| 日韩国产精品一区| 在线中文字幕视频观看| 国产精品久久久久久久午夜| 成人香蕉社区| 美女黄色片网站| 蜜桃传媒麻豆第一区在线观看| 99久久久无码国产精品性波多| 国产精品美女久久久久高潮| 男人午夜免费视频| 精品国产99国产精品| 麻豆影视国产在线观看| 国产精品福利在线| 亚洲女娇小黑人粗硬| 可以在线看的av网站| 国产高清久久久| 国产suv精品一区二区68| 色播五月激情综合网| 四虎影院在线播放| 久久久久久久久久久久久久久久久久av | 欧美日韩在线视频一区二区| www.com欧美| 久久国产精品久久精品| 欧美高清你懂的| 亚洲精品免费在线看| 日日夜夜免费精品| 成人免费毛片糖心| 色综合欧美在线| 视频二区在线| 97在线观看免费| 婷婷成人影院| 丝袜老师办公室里做好紧好爽| 成人aaaa免费全部观看| 国产一级特黄a高潮片| 欧美成人精品高清在线播放 | 一区二区免费看| 亚洲精品成av人片天堂无码| 欧美日本黄视频| 我要色综合中文字幕| av久久久久久| 国产传媒欧美日韩成人| 欧美日韩精品亚洲精品| 日韩免费观看高清完整版| 免费在线观看的电影网站| dy888夜精品国产专区| 亚洲高清久久| 欧美久久精品午夜青青大伊人| 福利视频在线导航| 国产精品久久久久7777婷婷| 欧美精品系列| 欧美特级aaa| 亚洲婷婷综合久久一本伊一区| 91亚洲国产成人精品一区| 伦理中文字幕亚洲| jizzjizzjizz欧美| 精品少妇一区二区三区在线| 91蜜桃传媒精品久久久一区二区| 久久久久久久久久久影院| 亚洲欧美在线磁力| 日本电影久久久| 欧美a级免费视频| av欧美精品.com| 天天天天天天天干| 按摩亚洲人久久| 亚洲精品一二三**| 国产网站免费在线观看| 久久久九九九九| 国产毛片一区二区三区va在线| 九九热这里只有精品6| 欧美a一欧美| 欧美男女交配视频| 一级精品视频在线观看宜春院 | 91免费视频大全| 中文字幕第2页| 欧美成人免费在线观看| 老司机凹凸av亚洲导航| 国产激情在线观看视频| 中文字幕一区在线观看视频| 男人天堂一区二区| 国产精品99久久久久久人| 在线观看国产精品入口| 国产xxxxxxxxx| 欧美日韩国产美| 国产污视频在线播放| 亚洲欧美国产精品桃花| 国产99久久久国产精品潘金| 无码视频一区二区三区| 九九热这里只有精品6| 国产一区二区三区天码| 极品人妻一区二区| 欧洲一区二区三区在线| 欧美精品videosex| 亚洲精品8mav| xf在线a精品一区二区视频网站| 911美女片黄在线观看游戏|