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

Mozilla Thunderbird的擴展開發

運維 系統運維
觸發事件可以在我們自己的MFC子程序中模擬目標程序中的事件。Mozilla平臺下如何擴展Thunderbird,本文主要講的是,通過socket通信來實現MFC對Thunderbird的控制需求。

  最近遇到這樣一個需求:在我們的MFC程序中控制Thunderbird。拿到這個奇怪的需求后,有了這么幾個想法:1)用全局鉤子試著勾住Thunderbird,可細想好像不對。2)用spy++探查點擊Thunderbird的各個菜單,按鈕時觸發的事件,總歸是win32平臺上跑的程序,歸根到底還是事件觸發,從理論上說應該是可以在我們自己的MFC程序中模擬標目程序中的各個事件觸發。

  但接觸到Mozilla的socket方面的知識后,放棄了上面的想法,改用socket通信來實現此需求。一來Thunderbird源代碼可以自行修改,因此可以加入一些代碼使之成為一個類似HTTP服務器的服務器端程序,二來使用socket進行連接與語言無關,因此C++的程序可以和javascript的程序完成通信,但缺點也很明顯,要占用端口,只涉及到本地機器的通信卻使用了socket這樣的網絡通信機制。

  先來介紹下完成這個功能用到的基本知識:由于輸入流基接口nsIInputStream沒有提供任何從javascript中讀取數據的方法,而只能在C++中讀取,因此我們必須使用一個可腳本化的輸入流來對其進行包裝,這個可腳本化的輸入流實現了nsIScriptableInputStream接口。

  當然也可以使用其他流類型,比如為了讀取二進制數據,我們可以使用nsIBinaryInputStream,反正在javascript中,你總得以其他形式的流來包裝基流。

  在Mozilla中,網絡數據的讀和寫是在一個單獨的線程中進行的,從socket中讀數據是異步的,這就意味著只要socket中有數據存在,就在后臺讀取數據,而程序會收到數據可讀的通知信息,這就意味著我們需要創建一個監聽者來監聽這個信息。

  對于異步讀取數據,我們還需要創建一個輸入流Pump,之所以Mozilla選擇“泵”這個名稱是因為當有數據存在時它就發送小塊的數據給監聽者。這個Pump實現了nsIInputStreamPump接口,這個接口繼承自nsIRequest,后者提供了暫停連接和特定的緩存行為(這些一般的socket程序用不上,但像HTTP這樣構建在socket上的高層次應用會用得上的)。

  pump.asyncRead(dataListener,null);

  asyncRead函數用來給Pump對象設置一個監聽者,當有數據到來或連接關閉時,監聽者就會被調用。監聽者對象應該實現nsIStreamListener接口,這個接口有一個方法onDataAvailable,當有額外數據可讀時就會被調用。此接口繼承自nsIRequestObserver,這個接口有兩個方法,onStartRequest,onStopRequest,這兩個方法在輸入流的開始和結束時分別被調用,因此這3個方法都應該實現。

  下面是客戶端代碼,使用最簡單的阻塞式TCP連接:

  

  1. void CClientTestDlg::OnSend()  
  2.  
  3.   {//發送按鈕  
  4.  
  5.   UpdateData();  
  6.  
  7.   if(str.IsEmpty())  
  8.  
  9.   {  
  10.  
  11.   list.InsertString(0,"發送的字符串不能為空。");  
  12.  
  13.   return;  
  14.  
  15.   }  
  16.  
  17.   //strcpy(msg.msg,(LPCTSTR)str);  
  18.  
  19.   char szText[1024];  
  20.  
  21.   strcpy(szText,(LPCTSTR)str);  
  22.  
  23.   SOCKET socket = ::socket(AF_INET,SOCK_STREAM,IPPROTO_TCP);  
  24.  
  25.   if(socket==INVALID_SOCKET)  
  26.  
  27.   {  
  28.  
  29.   list.InsertString(0,"創建socket發生錯誤。");  
  30.  
  31.   return;  
  32.  
  33.   }  
  34.  
  35.   SOCKADDR_IN servAddr;  
  36.  
  37.   servAddr.sin_family = AF_INET;  
  38.  
  39.   servAddr.sin_port = htons(25501);  
  40.  
  41.   servAddr.sin_addr.S_un.S_addr = inet_addr("127.0.0.1");  
  42.  
  43.   if(::connect(socket,(sockaddr*)&servAddr,sizeof(servAddr))==-1)  
  44.  
  45.   {  
  46.  
  47.   list.InsertString(0,"連接服務器發生錯誤。");  
  48.  
  49.   return;  
  50.  
  51.   }  
  52.  
  53.   if(::send(socket,szText,strlen(szText),0) == SOCKET_ERROR)// recv(ServerSocket,buf,sizeof(buf),0);  
  54.  
  55.   {  
  56.  
  57.   list.InsertString(0,"發送數據發生錯誤。");  
  58.  
  59.   return;  
  60.  
  61.   }  
  62.  
  63.   int bytesRecv = SOCKET_ERROR;  
  64.  
  65.   char buffer[1024];  
  66.  
  67.   memset(buffer,0,1024);  
  68.  
  69.   bytesRecv = recv( socket, buffer, 1024, 0 );  
  70.  
  71.   DWORD dwerr = WSAGetLastError();  
  72.  
  73.   CString str;  
  74.  
  75.   str.Format("%s",buffer);  
  76.  
  77.   list.InsertString(0,str);  
  78.  
  79.   ::closesocket(socket);  
  80.  
  81.   } 

#p#

  服務器端代碼,通過修改Thunderbird源代碼,使之成為一個類似HTTP服務器的服務器端

 

  1.  //***************************************************************************  
  2.  
  3.   //Author: phinecos  
  4.  
  5.   //Date : 2008/5/19  
  6.  
  7.   //Description:服務器監聽對象  
  8.  
  9.   //Contact:phinecos@163.com  
  10.  
  11.   //***************************************************************************  
  12.  
  13.   //服務器端對象  
  14.  
  15.   const CI = Components.interfaces, CC = Components.classes, CR = Components.results;  
  16.  
  17.   var gServer = null;//服務器對象  
  18.  
  19.   var gUtility = null;//工具類對象  
  20.  
  21.   //var gConnection = null;//客戶端連接對象  
  22.  
  23.   function tBirdBiffServerOnLoad()  
  24.  
  25.   {//啟動監聽服務器  
  26.  
  27.   try  
  28.  
  29.   {  
  30.  
  31.   gUtility = new tBirdBiffUtility();//新建日志對象  
  32.  
  33.   gUtility.initialize();  
  34.  
  35.   gUtility.log("tBirdBiffServerUi.tBirdBiffServerOnLoad", "Thunderbird biff server loaded");  
  36.  
  37.   gServer = new tBirdBiffServer();//新建服務器對象  
  38.  
  39.   gServer.initialize();//初始化服務器端  
  40.  
  41.   gUtility.log("tBirdBiffServerOnLoad","start server");  
  42.  
  43.   }  
  44.  
  45.   catch(err)  
  46.  
  47.   {  
  48.  
  49.   gUtility.log("tBirdBiffServerOnLoad","start server failed");  
  50.  
  51.   }  
  52.  
  53.   }  
  54.  
  55.   function tBirdBiffServerOnClose()  
  56.  
  57.   {//關閉服務器  
  58.  
  59.   gUtility.log("tBirdBiffServerOnClose","close server");  
  60.  
  61.   gServer.finalize();  
  62.  
  63.   gServer = null;  
  64.  
  65.   gUtility = null;  
  66.  
  67.   }  
  68.  
  69.   function tBirdBiffServer()  
  70.  
  71.   {  
  72.  
  73.   this.serverSocket = null;//服務器端socket  
  74.  
  75.   this.port = null;//服務器端口  
  76.  
  77.   this.initialized = false;  
  78.  
  79.   gUtility.log("tBirdBiffServer constructor","construct ok");  
  80.  
  81.   }  
  82.  
  83.   tBirdBiffServer.prototype =  
  84.  
  85.   {  
  86.  
  87.   getServerSocket: function()  
  88.  
  89.   {//創建服務器端socket  
  90.  
  91.   this.serverSocket = CC["@mozilla.org/network/server-socket;1"].createInstance(CI.nsIServerSocket);  
  92.  
  93.   if(!this.serverSocket)  
  94.  
  95.   {  
  96.  
  97.   gUtility.log("tBirdBiffServer.getServerSocket","Unable to get a server socket");  
  98.  
  99.   }  
  100.  
  101.   else  
  102.  
  103.   {  
  104.  
  105.   try  
  106.  
  107.   {  
  108.  
  109.   this.serverSocket.init(this.port, false, -1);//初始化socket,綁定到端口port上  
  110.  
  111.   this.serverSocket.asyncListen(tBirdBiffServerSocketListener);//開始異步監聽  
  112.  
  113.   gUtility.log("tBirdBiffServer.getServerSocket","Server socket established");  
  114.  
  115.   }  
  116.  
  117.   catch(e)  
  118.  
  119.   {  
  120.  
  121.   gUtility.log("tBirdBiffServer.getServerSocket, Server socket established error");  
  122.  
  123.   this.serverSocket = null;  
  124.  
  125.   }  
  126.  
  127.   }  
  128.  
  129.   },  
  130.  
  131.   closeServerSocket: function()  
  132.  
  133.   {//關閉服務器端socket  
  134.  
  135.   if(!this.serverSocket)  
  136.  
  137.   {  
  138.  
  139.   this.serverSocket.close(null);  
  140.  
  141.   this.serverSocket = null;  
  142.  
  143.   }  
  144.  
  145.   },  
  146.  
  147.   initialize: function()  
  148.  
  149.   {  
  150.  
  151.   if(this.initialized)  
  152.  
  153.   {  
  154.  
  155.   return;  
  156.  
  157.   }  
  158.  
  159.   this.port = 25501;//獲取端口號  
  160.  
  161.   gUtility.log("tBirdBiffServer.initialize","port is: "+this.port);  
  162.  
  163.   this.getServerSocket();//創建服務器端socket  
  164.  
  165.   this.initialized = true;  
  166.  
  167.   gUtility.log("tBirdBiffServer.initialize","initialize ok!");  
  168.  
  169.   },  
  170.  
  171.   finalize: function()  
  172.  
  173.   {//退出程序  
  174.  
  175.   if(!this.initialized)  
  176.  
  177.   {  
  178.  
  179.   return;  
  180.  
  181.   }  
  182.  
  183.   this.closeServerSocket();//關閉服務器端socket  
  184.  
  185.   gUtility.log("tBirdBiffServer.finalize","server Finalized");  
  186.  
  187.   },  
  188.  
  189.   }  
  190.  
  191.   var listener =  
  192.  
  193.   {  
  194.  
  195.   finished : function(data)  
  196.  
  197.   {//數據讀取完畢  
  198.  
  199.   ParseCommand(data);//解析命令字  
  200.  
  201.   }  
  202.  
  203.   }  
  204.  
  205.   const tBirdBiffServerSocketListener =  
  206.  
  207.   {  
  208.  
  209.   onSocketAccepted: function(serverSocket, clientSocket)  
  210.  
  211.   {//接受來自客戶端的socket請求  
  212.  
  213.   gUtility.log("tBirdBiffServerSocketListener.onSocketAccepted","Got a connection from: " + clientSocket.host + ":" + clientSocket.port);  
  214.  
  215.   var outputData = "Ok,server get your command";  
  216.  
  217.   var outstream = clientSocket.openOutputStream(0,0,0);  
  218.  
  219.   outstream.write(outputData,outputData.length);  
  220.  
  221.   try  
  222.  
  223.   {  
  224.  
  225.   //打開輸入流  
  226.  
  227.   var stream = clientSocket.openInputStream(0,0,0);  
  228.  
  229.   var instream = Components.classes["@mozilla.org/scriptableinputstream;1"].createInstance(Components.interfaces.nsIScriptableInputStream);  
  230.  
  231.   instream.init(stream);  
  232.  
  233.   var dataListener =  
  234.  
  235.   {  
  236.  
  237.   data : "",//來自客戶端的數據  
  238.  
  239.   onStartRequest: function(request, context){},  
  240.  
  241.   onStopRequest: function(request, context, status){  
  242.  
  243.   instream.close();  
  244.  
  245.   outstream.close();  
  246.  
  247.   listener.finished(this.data);  
  248.  
  249.   },  
  250.  
  251.   onDataAvailable: function(request, context, inputStream, offset, count){  
  252.  
  253.   this.data += instream.read(count);  
  254.  
  255.   },  
  256.  
  257.   };  
  258.  
  259.   var pump = Components.classes["@mozilla.org/network/input-stream-pump;1"].createInstance(Components.interfaces.nsIInputStreamPump);  
  260.  
  261.   pump.init(stream, -1, -1, 0, 0, false);  
  262.  
  263.   pump.asyncRead(dataListener,null);  
  264.  
  265.   }  
  266.  
  267.   catch(err)  
  268.  
  269.   {  
  270.  
  271.   gUtility.log("tBirdBiffServerConnection.setSocket",e);  
  272.  
  273.   return false;  
  274.  
  275.   }  
  276.  
  277.   },  
  278.  
  279.   onStopListening: function(serverSocket, status)  
  280.  
  281.   {//服務器端停止監聽  
  282.  
  283.   gUtility.log("tBirdBiffServerSocketListener.onStopListening","Server socket has stopped listening");  
  284.  
  285.   }  
  286.  
  287.   } 

【編輯推薦】

  1. Thunderbird 郵件導入導出的方法
  2. Thunderbird的安裝方法
  3. Thunderbird 配置手冊
  4. Ubuntu下安裝Thunderbird
  5. Thunderbird 的相關擴展
  6. Thunderbird中常見問題解決
  7. 圖文并茂 Thunderbird設置教程
  8. Thunderbird的使用技巧
責任編輯:zhaolei 來源: 網絡轉載
相關推薦

2011-01-18 17:49:29

2011-01-21 16:14:30

Thunderbird

2024-03-11 10:19:30

Plasmo瀏覽器Web

2009-06-12 14:31:59

Google WaveGoogle Wave

2011-07-21 13:30:18

Apple Safari 瀏覽器

2011-01-19 09:25:40

互聯網

2021-05-27 14:58:07

ThunderbirdMozilla密鑰

2012-10-22 16:49:56

IBMdw

2011-01-21 14:30:02

Thunderbird技巧

2016-09-21 12:34:10

Chrome瀏覽器插件

2011-01-18 17:35:08

Thunderbird安裝方法

2011-05-12 16:30:44

Mozill應用商店HTML5

2011-12-07 10:03:11

Mozilla新聞

2011-01-21 17:00:49

Thunderbird日歷

2011-01-18 18:28:49

Thunderbird配置

2011-01-21 15:00:08

Thunderbirdmail

2011-01-18 18:54:48

Thunderbird

2009-07-28 17:27:26

Sun網絡架構

2011-01-21 17:22:36

Thunderbird

2011-01-21 17:12:48

ThunderbirdIMAP
點贊
收藏

51CTO技術棧公眾號

国产美女精品在线| 日韩在线麻豆| 伊人婷婷欧美激情| 蜜桃网站成人| 国产女人高潮的av毛片| 在线看片一区| 伊人久久免费视频| 免费在线观看日韩av| 伊人网在线播放| 亚洲人123区| 久久人人爽爽人人爽人人片av| 亚洲熟妇无码久久精品| 亚洲美女黄网| 综合网中文字幕| 午夜剧场免费看| 996久久国产精品线观看| 福利一区视频在线观看| 99精品视频网站| 美女做暖暖视频免费在线观看全部网址91 | 亚洲国产欧美一区二区三区同亚洲 | 在线综合亚洲欧美在线视频| 男人用嘴添女人下身免费视频| 午夜视频在线| 久久精品亚洲国产奇米99| 91一区二区三区| 日韩av免费播放| 99国产精品| 欧美激情啊啊啊| 日韩欧美视频免费观看| 欧美人与牛zoz0性行为| 亚洲黄一区二区| 能看毛片的网站| 欧美videos粗暴| 一本高清dvd不卡在线观看| 久久久久久久香蕉| 成年人黄视频在线观看| 国产精品国产三级国产普通话99| 欧美日本国产精品| 黄色av小说在线观看| 国产美女在线观看一区| 成人高h视频在线| 伊人久久亚洲综合| 日本伊人午夜精品| 国产精品久久一区主播| 亚洲成人第一网站| 首页国产欧美久久| 全球成人中文在线| 亚洲精品男人的天堂| 日韩午夜av| 97久久精品视频| 日本视频www| 在线播放日韩| 91国内揄拍国内精品对白| 久久免费黄色网址| 好吊一区二区三区| 久久久综合免费视频| 精品人妻在线播放| 今天的高清视频免费播放成人| 欧美精品在线免费观看| 黄色一级视频在线观看| 欧美成人嫩草网站| 久久久久久午夜| 国产午夜精品无码一区二区| 伊人久久大香线蕉综合热线| 97精品国产97久久久久久春色| 国产无码精品一区二区| 亚洲伊人网站| 国产高清视频一区三区| 奴色虐av一区二区三区| 麻豆久久久久久久| 亚洲xxxx18| 狠狠躁夜夜躁av无码中文幕| a美女胸又www黄视频久久| 久久一区二区三区av| 国产中文字幕在线看| 国产精品对白交换视频| 黄色成人在线免费观看| 看黄在线观看| 在线观看网站黄不卡| 欧美午夜精品理论片| 亚洲午夜精品| 日韩电影大全免费观看2023年上| 国产一二三四五区| 影视一区二区| 8x拔播拔播x8国产精品| 中文字幕在线观看免费| 国产99久久久国产精品潘金网站| 久久国产精品久久精品国产| 99reav在线| 亚洲影院理伦片| 日韩视频在线免费看| 精品国模一区二区三区欧美| 亚洲电影天堂av| 国产三级短视频| 欧美午夜电影在线观看| 日本一欧美一欧美一亚洲视频| 亚洲在线免费观看视频| 成人性视频免费网站| 日韩hmxxxx| 黑人精品视频| 欧美视频在线观看一区二区| 国产精品亚洲一区二区无码| 欧美伦理在线视频| 欧美激情小视频| 中文字幕欧美在线观看| 99在线精品视频| 在线免费观看成人网| 松下纱荣子在线观看| 欧美一卡二卡三卡四卡| 国产高清一区二区三区四区| 亚洲视频日本| 成人欧美一区二区三区在线| 免费在线观看污视频| 一区二区成人在线| 亚洲第一天堂久久| 国产调教一区二区三区| 久久久久久有精品国产| 国产伦精品一区二区三区免.费 | 日韩深夜视频| 日韩欧美中文字幕精品| 日本高清黄色片| 香蕉视频成人在线观看| 99伊人久久| www.在线视频| 欧美人牲a欧美精品| 欧美三级视频网站| 欧美一区=区| 狠狠久久综合婷婷不卡| 欧美极品少妇videossex| 欧美日韩成人激情| 亚洲精品天堂网| 久久先锋资源| 日本免费高清一区二区| 国产精品vvv| 亚洲成人久久久| 亚洲成人教育av| 成人精品视频一区二区| 红杏视频成人| 久久久人成影片一区二区三区观看 | 国产51人人成人人人人爽色哟哟| 午夜电影网一区| 国产一级免费片| 亚洲视频久久| 国产欧美日韩亚洲| 99久久精品免费看国产小宝寻花 | 日本黄色三级网站| 欧美不卡在线| 国产福利久久精品| 黄色影院在线看| 亚洲第一精品福利| 久久露脸国语精品国产91| www.亚洲激情.com| 黄色影院一级片| 少妇精品久久久一区二区三区 | 婷婷激情成人| 久久伊人精品视频| www.综合色| 亚洲成人免费在线| 少妇户外露出[11p]| 国产日韩欧美一区| 日本精品一区二区三区不卡无字幕| 日韩高清中文字幕一区二区| 中文字幕欧美日韩在线| 亚洲最大成人av| 伊人夜夜躁av伊人久久| youjizz.com日本| 国产手机视频一区二区| 日本一区视频在线观看| 成人在线高清| 欧美成人高清视频| 天天干天天爱天天操| 欧美视频一区二区三区…| 一级黄色性视频| 精一区二区三区| 免费在线黄网站| 午夜精品福利影院| 国产日韩欧美视频在线| 丝袜中文在线| 亚洲欧美综合区自拍另类| 亚洲熟女乱色一区二区三区久久久| 亚洲精选视频在线| 丰满大乳奶做爰ⅹxx视频| 日韩av高清在线观看| 国产欧美123| 亚州综合一区| 成人激情在线播放| 亚洲妇女成熟| 欧美久久精品午夜青青大伊人| 日韩在线视频观看免费| 欧美午夜一区二区三区| 久草免费新视频| 国产欧美日韩视频在线观看| 国模大尺度视频| 日韩国产在线观看| 成人免费视频91| 久久精品国产大片免费观看| 国产精品一码二码三码在线| 电影天堂国产精品| 久久久久国产精品免费网站| eeuss影院www在线观看| 精品国产乱码久久久久久久| 国产一级片一区二区| 亚洲1区2区3区视频| 欧美爱爱免费视频| 久久精品亚洲麻豆av一区二区| 亚洲制服在线观看| 日韩高清一区在线| 日本欧美视频在线观看| 91一区在线| 秋霞毛片久久久久久久久| 大奶在线精品| 91九色蝌蚪嫩草| 成人啊v在线| 97超视频免费观看| 欧美理论电影| 久久av在线播放| 日本中文在线| 国产一区二区三区三区在线观看| 天天操天天操天天干| 日韩一本二本av| 97caocao| 欧美日韩国产首页在线观看| 亚洲AV无码成人精品区东京热| 亚洲国产成人av好男人在线观看| 日韩在线观看视频一区二区| 国产精品久久久久久久岛一牛影视| www.色天使| xfplay精品久久| 中文字幕影片免费在线观看| 成人综合婷婷国产精品久久免费| 国产欧美激情视频| 激情国产一区二区| 国产精品一区二区小说| 日本欧美一区二区三区| 妺妺窝人体色www在线观看| 视频一区中文字幕国产| 国产精品丝袜久久久久久消防器材| 精品动漫3d一区二区三区免费| 亚洲高潮无码久久| 欧美特黄一区| 国产婷婷一区二区三区| 亚洲性视频h| 免费国产黄色网址| 亚洲精选一区| 虎白女粉嫩尤物福利视频| 米奇777在线欧美播放| 日韩视频第二页| 免费久久99精品国产自在现线| 国产超级av在线| 欧美专区18| 女性隐私黄www网站视频| 免费亚洲视频| 一区二区三区网址| 精品一区二区三区的国产在线播放| 少妇一级淫免费播放| 国产伦精品一区二区三区免费 | 久久综合久久鬼色中文字| 狠狠人妻久久久久久综合蜜桃| 91色九色蝌蚪| 国产精品久久免费观看| 国产精品麻豆久久久| 国产麻豆视频在线观看| 一区二区成人在线| 在线观看亚洲天堂| 欧美影院精品一区| 国产精品一区二区三区在线免费观看 | 久久福利网址导航| 波多野在线观看| 日本久久中文字幕| 亚洲精品一区av| 国产伦精品一区二区三区在线| 欧美做受69| 一区二区视频在线播放| 综合在线视频| 黄色免费视频大全| 九九久久精品视频| 久久久久亚洲AV成人无码国产| 国产亚洲一区二区三区| www.xxxx日本| 欧美性猛交xxxx免费看久久久| 在线视频你懂得| 亚洲成人精品在线| 日本在线免费| 98精品国产高清在线xxxx天堂| 日韩一区精品| 国产精品国产精品国产专区不卡| 日韩av中文字幕一区| 亚洲欧洲日韩综合二区| 日韩香蕉视频| 一级做a免费视频| 9色porny自拍视频一区二区| 综合 欧美 亚洲日本| 亚洲福利电影网| 在线观看中文字幕av| 亚洲国产91精品在线观看| 888av在线| 51色欧美片视频在线观看| 99久久久国产| 欧美在线播放一区| 亚洲国产1区| 久久国产精品国产精品| 99视频有精品| 手机在线免费看片| 91福利视频网站| 老熟妇高潮一区二区高清视频| 丝袜情趣国产精品| 自拍一区在线观看| 99在线视频首页| 欧美韩国日本在线观看| 久草资源站在线观看| 国产传媒一区在线| 一级免费黄色录像| 极品国产人妖chinesets亚洲人妖| 久久久久久久久久久av| 日本免费成人| 欧洲一区二区在线观看| 亚洲欧洲视频| 秋霞午夜鲁丝一区二区| 中文字幕一区二区三区在线不卡| 欧美精品一二三四区| 亚洲黄色在线看| sm在线观看| αv一区二区三区| 在线成人激情| jizz18女人| 国产精品伦一区二区三级视频| 国产精品第5页| 亚洲精品久久在线| mm视频在线视频| 国产精品白丝jk白祙| 欧美激情五月| 久久无码人妻一区二区三区| **欧美大码日韩| 国产精品污视频| 久久天堂电影网| 日韩精品成人| 真人做人试看60分钟免费| 国产精品系列在线观看| 99鲁鲁精品一区二区三区| 欧美精品乱码久久久久久| 91网页在线观看| 国产欧美精品一区二区三区-老狼| 国产一卡不卡| 欧美三级午夜理伦三级富婆| 国产日韩欧美制服另类| 国产精品无码一区| 在线免费观看羞羞视频一区二区| 日韩av一级| 亚洲精品一区二区毛豆| 另类小说视频一区二区| 中文字幕91视频| 欧美精品少妇一区二区三区| 高潮毛片在线观看| 99精品欧美一区二区三区| 国产一区视频在线观看免费| 精品伦一区二区三区| 午夜av区久久| 你懂的视频在线观看| 国产精品免费小视频| 国产精品成久久久久| 国产人妻精品久久久久野外| 亚洲专区一二三| 五月婷婷深深爱| 日产日韩在线亚洲欧美| 日韩大片在线| 杨幂一区二区国产精品| 亚洲国产欧美日韩另类综合 | 久久综合99re88久久爱| 337p粉嫩色噜噜噜大肥臀| 精品国产一区二区三区久久久| 视频亚洲一区二区| 777久久久精品一区二区三区| 国产无人区一区二区三区| 一级欧美一级日韩| 欧美激情国产日韩精品一区18| 欧美一级一片| 欧美美女性视频| 亚洲v精品v日韩v欧美v专区 | 欧美国产日本高清在线| 欧美黑人做爰爽爽爽| 中文字幕欧美人妻精品一区| 亚洲欧洲韩国日本视频| 黄色福利在线观看| 国产精品免费久久久| 伊人久久成人| 最新日韩免费视频| 亚洲国产精品va在线看黑人动漫| 日韩一区二区三区免费| 亚洲精品国产suv一区88| 91麻豆123| 99久久亚洲精品日本无码| 91高清视频免费观看| 天天做天天爱天天综合网2021| 亚洲国产精品自拍视频| 欧美日韩精品久久久| 日产福利视频在线观看| 97超碰免费观看| 国产三级精品在线| 亚洲欧美丝袜中文综合| 91亚洲精品久久久久久久久久久久|