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

網絡安全編程:通過消息實現進程間的通信

安全
通過消息實現進程間的通信在這里介紹兩種方法,一種是通過自定義消息進行進程間的通信,另一種是通過使用WM_COPYDATA消息進行進程間的通信。

 [[377775]]

在很多軟件中需要多個進程協同工作,而不是單一的進程進行工作。那么多進程的協同工作就涉及進程間的通信。在Windows下,進程間的通信有多種實現的方法,比如管道、郵槽、剪貼板、內存共享……本文介紹通過消息實現進程間的通信。

通過消息進行進程間的通信,有一定的限制性。Windows下有窗口的應用程序是基于消息驅動進行工作的,那么沒有窗口的程序就不是基于消息驅動來進行工作的。對于非窗口的應用程序是無法通過消息進行進程間通信的。

通過消息實現進程間的通信在這里介紹兩種方法,一種是通過自定義消息進行進程間的通信,另一種是通過使用WM_COPYDATA消息進行進程間的通信。

01 通過自定義消息進行進程通信

消息分為兩種,一種是系統已經定義的消息,另一種是用戶自定義的消息。系統已經定義的消息是從0到0x3ff,用戶自定義的消息可以從0x400開始。系統中提供了一個宏WM_USER,在進行自定義消息時,在WM_USER的基礎上加一個值就可以了。下面來實現一個自定義消息完成進程間通信的程序例子。

1. 實現自定義消息的步驟

通過自定義消息進行進程間通信,只有帶有窗口的進程才能完成基于消息的進程間通信。既然是進程間通信,那么就需要至少編寫兩個程序,一個是接收消息的服務端,另一個是發送消息的客戶端,并且這兩個程序都需要有窗口。

先來介紹程序的功能,在發送消息的客戶端,通過自定義消息給接收消息的服務端發送兩個整型的數值。接收消息的服務端,將接收到的兩個數值進行簡單的加法運算。接收消息的服務端在VC下,使用MFC通過自定義消息來完成進程間的通信需要3個步驟,首先要定義一個消息,其次是添加自定義消息的消息映射,最后是添加消息映射對應的消息處理函數。

首先在服務端和客戶端定義一個消息,具體如下:

  1. #define WM_UMSG WM_USER + 1 

然后是在接收消息的服務端添加消息映射,如下: 

  1. BEGIN_MESSAGE_MAP(CUserWMDlg, CDialog)  
  2.  //{{AFX_MSG_MAP(CUserWMDlg)  
  3.  ON_WM_SYSCOMMAND()  
  4.  ON_WM_PAINT()  
  5.  ON_WM_QUERYDRAGICON()  
  6.  ON_MESSAGE(WM_UMSG, RevcMsg)  
  7.  //}}AFX_MSG_MAP  
  8. END_MESSAGE_MAP() 

在這個消息映射中,ON_MESSAGE(WM_UMSG, RevcMsg)是自定義消息的消息映射。

最后在接收消息的服務端添加自定義消息的消息響應函數。根據消息映射可以得知,消息響應函數的函數名為RevcMsg(),定義如下: 

  1. VOID CUserWMDlg::RevcMsg(WPARAM wParam, LPARAM lParam)  
  2.  
  3.  // ….  

2. 完成自定義消息通信的代碼

來看兩個程序的窗口界面,如圖1和圖2所示。

圖1  自定義消息服務端(接收端)

圖2  自定義消息客戶端(發送端)

知道了兩個程序的作用以及窗口的界面,那么開始對它們分別進行編碼。首先來看自定義消息服務端的代碼,該部分的代碼比較簡單。消息響應函數代碼如下: 

  1. VOID CUserWMDlg::RevcMsg(WPARAM wParam, LPARAM lParam)  
  2.  
  3.   int nNum1, nNum2, nSum;  
  4.   nNum1 = (int)wParam;  
  5.   nNum2 = (int)lParam;  
  6.   nSum = nNum1 + nNum2;  
  7.   CString str;  
  8.   str.Format("%d", nSum);  
  9.   SetDlgItemText(IDC_EDIT_REVCDATA, str);  

在消息響應的函數中有兩個參數,分別是WPARAM類型和LPARAM類型。這兩個參數可以接收兩個4字節的參數。這里代碼中接收了兩個整型數值,進行相加后顯示在了窗口上的編輯框中。

在發送消息端,也需要定義相同的消息類型。這里不再重復介紹,只要把響應的定義復制粘貼即可。主要看發送消息的函數,代碼如下: 

  1. void CUserWMCDlg::OnBtnSend()  
  2.  
  3.   // 在此處添加處理程序代碼  
  4.   int nNum1, nNum2;  
  5.   nNum1 = GetDlgItemInt(IDC_EDIT_SENDDATA, FALSE, FALSE);  
  6.   nNum2 = GetDlgItemInt(IDC_EDIT_SENDDATA2, FALSE, FALSE);  
  7.   HWND hWnd = ::FindWindow(NULL, "自定義消息服務端");  
  8.   ::SendMessage(hWnd, WM_UMSG, (WPARAM)nNum1, (LPARAM)nNum2); 
  9.  

通過SendMessage()函數完成了發送,同樣也非常簡單。在SendMessage()函數中,通過第3個參數和第4個參數將兩個整型值發送給了目標的窗口。

從自定義消息的例子中可以看出,自定義消息對于進程間的通信只能完成簡單的數值型的傳遞,對于類型復雜的數據的通信就無法完成了。那么,通過消息是否能完成字符串等數據的通信傳遞呢?答案是肯定的。接下來看使用WM_COPYDATA消息完成進程間通信的例子。 

02 通過WM_COPYDATA消息進行進程通信

自定義消息傳遞的數據類型過于簡單,而通過WM_COPYDATA消息進行進程間的通信會更加靈活。但是由于SendMessage()函數在發送消息時的阻塞機制,在使用WM_COPYDATA時傳遞的消息也不宜過多。

1. WM_COPYDATA消息介紹

應用程序發送WM_COPYDATA消息可以將數據傳遞給其他應用程序。WM_COPYDATA消息需要使用SendMessage()函數進行發送,而不能使用PostMessage()消息。通過SendMessage()函數發送WM_COPYDATA消息的形式如下: 

  1. SendMessage(  
  2.  (HWND) hWnd,  
  3.  WM_COPYDATA,  
  4.  (WPARAM) wParam,  
  5.  (LPARAM) lParam  
  6. ); 

第1個參數hWnd是接收消息的目標窗口句柄;第2個參數是消息的類型,也就是當前正在介紹的消息WM_COPYDATA;第3個參數是發送消息的窗口句柄;第4個參數是一個COPYDATASTRUCT結構體的指針。

COPYDATASTRUCT結構體的定義如下: 

  1. typedef struct tagCOPYDATASTRUCT {  
  2.  ULONG_PTR dwData;  
  3.  DWORD cbData;  
  4.  PVOID lpData;  
  5. } COPYDATASTRUCT, *PCOPYDATASTRUCT; 

其中,dwData是自定義的數據,cbData用來指定lpData指向的數據的大小,lpData是指向數據的指針。

在程序中,發送WM_COPYDATA消息方仍然會通過調用FindWindow()函數來查找目標窗口的句柄,而接收消息方需要響應對WM_COPYDATA消息的處理。WM_COPYDATA不是自定義消息,在編程時不必像自定義消息那樣需要自己定義消息和添加消息映射,這部分工作可以直接通過MFC輔助進行。

MFC添加WM_COPYDATA消息響應的方法如下:

首先在要響應WM_COPYDATA消息的窗口對應的類上單擊鼠標右鍵,在彈出的快捷菜單中選擇“Add Windows Message Handler”,如圖3所示。選擇該菜單項后會出現如圖4所示的添加消息響應函數對話框。

圖3  選擇“Add Windows Message Handler”

圖4  添加消息響應函數對話框

在“New Windows messages/events:”列中找到WM_COPYDATA消息,然后雙擊將它添加到“Existing message/event handlers:”列中。最后單擊“Add Handler”按鈕,MFC就自動生成了WM_COPYDATA的消息映射及消息響應函數。Windows其他常用的消息都可以通過該對話框輔助生成消息映射及消息響應函數。

2. WM_COPYDATA程序界面及介紹

程序同樣分為客戶端程序和服務端程序。首先來看程序運行的效果,如圖5所示。

圖5  WM_COPYDATA的服務端與客戶端界面

WM_COPYDATA的服務端會接收WM_COPYDATA消息,在接收到WM_COPYDATA消息進行處理后同樣會發送一個WM_COPYDATA消息給客戶端進行消息反饋。WM_COPYDATA的客戶端會通過FindWindow()函數來查找WM_COPYDATA的服務端,并發送WM_COPYDATA消息,同樣也會接收服務端發來的WM_COPYDATA消息并進行處理。

3. WM_COPYDATA客戶端程序的實現

我們來完成程序的編碼工作,首先來看WM_COPYDATA客戶端。客戶端的界面中有3個控件,分別是一個按鈕控件、一個編輯框控件和一個列表框控件(為列表框控件定義一個控件變量:CListBox m_ListRec;)。

WM_COPYDATA客戶端的代碼如下: 

  1. void CCopyDataCDlg::OnBtnSend()  
  2.  
  3.   // 在此處添加處理程序代碼  
  4.   // 查找接收 WM_COPYDATA 消息的窗口句柄  
  5.   HWND hWnd = ::FindWindow(NULL, "COPYDATA 服務端");  
  6.   CString strText;  
  7.   GetDlgItemText(IDC_EDIT_SENDDATA, strText);  
  8.   // 設置 COPYDATASTRUCT 結構體  
  9.   COPYDATASTRUCT cds;  
  10.   cds.dwData = 0
  11.   cds.cbData = strText.GetLength() + 1;  
  12.   cds.lpData = strText.GetBuffer(cds.cbData); 
  13.   // m_hWnd 是 CWnd 類中的一個成員函數  
  14.   // 表示該窗口的句柄  
  15.   ::SendMessage(hWnd, WM_COPYDATA, (WPARAM)m_hWnd, (LPARAM)&cds);  
  16.  
  17. BOOL CCopyDataCDlg::OnCopyData(CWnd* pWnd, COPYDATASTRUCT* pCopyDataStruct)  
  18.  
  19.   // 在此處添加處理程序代碼或者調用默認方法  
  20.   // 處理服務端發來的 WM_COPYDATA 消息  
  21.   CString strText;  
  22.   strText.Format("服務端在[%s]接收到該消息", pCopyDataStruct->lpData);  
  23.   m_ListRec.AddString(strText);  
  24.   return CDialog::OnCopyData(pWnd, pCopyDataStruct);  

4. WM_COPYDATA服務端程序的實現

WM_COPYDATA 服務端有兩個控件,分別是一個列表框控件和一個按鈕控件。為列表框控件定義一個控件變量:CListBox m_ListData。

WM_COPYDATA 服務端的代碼如下: 

  1. BOOL CCopyDataSDlg::OnCopyData(CWnd* pWnd, COPYDATASTRUCT* pCopyDataStruct)  
  2.  
  3.   // 在此處添加處理程序代碼或者調用默認方法  
  4.   CString strText;  
  5.   // 通過發送消息的窗口句柄獲得窗口對應的進程號,即 PID  
  6.   DWORD dwPid = 0 
  7.   ::GetWindowThreadProcessId(pWnd->m_hWnd, &dwPid);  
  8.   // 格式化字符串并添加至列表框中  
  9.   strText.Format("PID=[%d]的進程發來的消息為:%s",  
  10.   dwPid, pCopyDataStruct->lpData);  
  11.   m_ListData.AddString(strText);  
  12.   // 獲取本地時間  
  13.   SYSTEMTIME st;  
  14.   GetLocalTime(&st);  
  15.   CString strTime;  
  16.   strTime.Format("%02d:%02d:%02d", st.wHour, st.wMinute, st.wSecond);  
  17.   // 將本地時間發送給客戶端程序  
  18.   COPYDATASTRUCT cds;  
  19.   cds.dwData = 0 
  20.   cds.cbData = strTime.GetLength() + 1;  
  21.   cds.lpData = strTime.GetBuffer(cds.cbData); 
  22.   // 注意 SendMessage()函數的第 3 個參數為 NULL  
  23.   ::SendMessage(pWnd->m_hWnd, WM_COPYDATA, NULL, (LPARAM)&cds);  
  24.   return CDialog::OnCopyData(pWnd, pCopyDataStruct);  
  25.  
  26. void CCopyDataSDlg::OnBtnDelall()  
  27.  
  28.   // 在此處添加處理程序代碼  
  29.   // 清空列表框內容  
  30.   while ( m_ListData.GetCount() )  
  31.   {  
  32.     m_ListData.DeleteString(0);  
  33.   }  

在接收消息的服務端調用GetWindowThreadProcessId()通過發送消息的窗口得到了發送消息的進程PID號,并將接收消息的時間反饋給了發送消息的客戶端。

關于WM_COPYDATA的服務端和客戶端的代碼都有比較詳細的注釋,因此沒有過多解釋。這里需要強調一點,WM_COPYDATA消息需要兩個附加消息,也就是SendMessage()函數的wParam和lParam參數都需要使用。wParam參數表示發送消息的窗口句柄,但是該參數可以省略,還可以通過類型轉換傳遞其他數值型的數據。lParam參數是COPYDATASTRUCT結構體指針類型,不可以省略,否則接收WM_COPYDATA消息的服務端會無法響應。 

 

責任編輯:龐桂玉 來源: 計算機與網絡安全
相關推薦

2021-02-21 18:19:43

網絡安全網絡安全編程創建進程

2021-02-23 10:20:07

網絡安全進程代碼

2019-11-08 14:47:49

TCPIP網絡

2021-03-01 11:38:15

網絡安全進程代碼

2021-01-18 10:35:18

網絡安全Windows代碼

2021-06-24 08:37:34

網絡安全內核代碼

2017-06-19 13:36:12

Linux進程消息隊列

2020-11-04 07:17:42

Nodejs通信進程

2021-03-03 12:20:42

網絡安全DLL編程

2012-06-28 14:21:20

2017-08-06 00:05:18

進程通信開發

2021-03-05 13:46:56

網絡安全遠程線程

2021-01-26 13:45:03

網絡安全Winsock編程

2013-03-28 13:14:45

AIDL進程間通信Android使用AI

2019-05-13 10:00:41

Linux進程間通信命令

2021-02-23 16:19:18

網絡安全智慧城市互聯網

2018-08-06 15:33:02

網絡安全CISO投資

2016-10-10 00:18:27

2011-05-13 13:24:02

2023-07-13 07:10:20

點贊
收藏

51CTO技術棧公眾號

99re热视频这里只精品| 黄色日韩在线| 日韩精品一区二区三区视频在线观看 | www.亚洲人.com| 91丨porny丨对白| 日韩一区二区三区免费视频| 一区二区三区欧美久久| 欧美高清视频一区二区三区在线观看| 在线视频 中文字幕| 影音国产精品| 日韩视频免费在线| 美女久久久久久久久久| 日韩高清二区| 欧美网站大全在线观看| 免费在线观看视频a| 69久久精品| 97精品国产97久久久久久久久久久久| 国产精品主播视频| 国产精品自拍99| 欧美精品国产| 久久视频在线直播| 黄色av免费播放| 日韩mv欧美mv国产网站| 欧美一级xxx| 天天爽夜夜爽一区二区三区| 高清视频在线观看三级| 亚洲精选一二三| 亚洲国内在线| 激情小说 在线视频| 成人丝袜高跟foot| 亚洲综合一区二区不卡| 在线观看免费视频一区| 视频精品一区二区| 欧美一级免费视频| 国产在线观看99| 午夜精品视频一区二区三区在线看| 亚洲美女又黄又爽在线观看| 在线精品视频播放| 欧美三级一区| 91精品在线一区二区| 在线观看av网页| 国产91欧美| 欧美在线免费观看亚洲| 又色又爽又高潮免费视频国产| av2020不卡| 亚洲午夜国产一区99re久久| 黄色网在线视频| av网站大全在线| 一区二区三区日韩精品| 欧洲xxxxx| 99在线播放| 亚洲欧洲中文日韩久久av乱码| 中国一区二区三区| 免费av不卡| 国产精品国产自产拍高清av王其| 视频一区二区三| jizz在线免费观看| 中文字幕第一区二区| 午夜精品美女久久久久av福利 | 少妇高潮久久77777| 国产一二三四区在线| 成人影院天天5g天天爽无毒影院| 一区二区三区视频免费| 国产精品69久久久久孕妇欧美| 日韩精品免费一区二区在线观看| 色婷婷综合久久久久| 999精品视频在线观看播放| 香蕉视频国产精品| 欧美激情免费在线| 自拍偷拍欧美亚洲| 日韩精品五月天| 国产欧美日韩综合精品| 精品国产乱码一区二区三 | 久久都是精品| 国产精品久久久久久久久借妻| www.av88| 国产中文字幕一区| 国产欧美一区二区三区不卡高清| 水中色av综合| 中文字幕在线播放不卡一区| 米仓穗香在线观看| 无遮挡在线观看| 欧美日韩视频不卡| 亚洲成年人在线观看| 亚洲三级网页| 久久久国产精品免费| 日产欧产va高清| 麻豆一区二区在线| julia一区二区中文久久94| 天天干天天做天天操| 亚洲国产成人一区二区三区| 穿情趣内衣被c到高潮视频| 白白色在线观看| 欧美三电影在线| 伊人网综合视频| 久久高清精品| 性欧美xxxx交| 91福利免费视频| 91网址在线看| 综合国产精品久久久| 888av在线视频| 欧美日韩一区精品| 插我舔内射18免费视频| 久久亚洲专区| 欧美伊久线香蕉线新在线| 国产女人18毛片水18精| 久久综合狠狠综合久久激情| 日韩精品手机在线观看| 蜜桃视频成人m3u8| 亚洲精品成人久久久| 三上悠亚作品在线观看| 日韩国产成人精品| 一区二区三区不卡视频在线观看 | 天堂av在线免费观看| 国产精品久99| 欧美色图另类小说| 99re6热只有精品免费观看| 中文字幕亚洲专区| 久久精品视频1| 大尺度一区二区| 9999在线观看| 日本美女久久| 亚洲精品之草原avav久久| 在线观看成人毛片| 狠狠色丁香九九婷婷综合五月 | 91精品秘密在线观看| 欧美在线性视频| 亚洲卡一卡二卡三| 亚洲欧美另类久久久精品| 亚洲国产精品三区| 九九综合在线| 1769国产精品| 黄色av中文字幕| 亚洲精品久久久蜜桃| 亚洲精品第三页| 久久综合av| 国产精品丝袜一区二区三区| 国产理论电影在线观看| 一本到不卡免费一区二区| 在线xxxxx| 国产综合精品| 国产亚洲情侣一区二区无| 青草视频在线免费直播| 日韩视频免费直播| 久久久精品视频免费观看| 国产在线不卡一区| 亚洲精品偷拍视频| 国产精品一区二区免费福利视频| 亚洲性视频网址| 综合久久中文字幕| 中文字幕日韩一区| 欧美又黄又嫩大片a级| 国产韩国精品一区二区三区| 91精品久久久久久久| 国产精品久久麻豆| 欧美一区二区三区色| 在线看的片片片免费| 国产成人免费视频精品含羞草妖精| 大片在线观看网站免费收看| av日韩精品| 欧美又大又粗又长| 国产精品视频二区三区| 欧美三级日韩三级国产三级| 亚洲怡红院在线观看| 国产精一区二区三区| 一本久道高清无码视频| 亚洲丝袜啪啪| 国产日韩精品在线观看| 高清全集视频免费在线| 精品日韩欧美一区二区| 国产精品国产三级国产专区52 | 黄色片在线观看网站| 国产精品一区二区91| 日韩日韩日韩日韩日韩| 九九综合在线| 成人两性免费视频| 国产极品人妖在线观看| 亚洲美女性视频| 91午夜交换视频| 亚洲精品老司机| 国产传媒第一页| 久久se这里有精品| 日韩精品在线中文字幕| 国产乱码精品一区二区三区四区| 国产精品视频一区二区三区四| 18+激情视频在线| 日韩国产一区三区| 国产精品亚洲lv粉色| 欧美日韩国产影院| 精品国产大片大片大片| 顶级嫩模精品视频在线看| 欧美成人黑人猛交| 欧美成人有码| 日韩三级电影网站| 一本一道久久a久久| 国产精品美女久久| 日韩av激情| 一区二区三区在线播放欧美| www.亚洲欧美| 精品视频免费看| 日韩手机在线观看| 中文字幕一区二区三区四区| 中文字幕在线永久| 韩国视频一区二区| 久久人妻精品白浆国产| 亚洲小说欧美另类社区| 亚洲三区在线| 伊人久久大香线蕉| 91精品黄色| 99re久久| 2019中文字幕全在线观看| a视频在线播放| 国产一区二区三区精品久久久| 国产同性人妖ts口直男| 欧美色倩网站大全免费| 男人午夜免费视频| 亚洲国产精品一区二区久久恐怖片 | 欧美牲交a欧美牲交aⅴ免费下载| 亚洲综合五月| 亚洲看片网站| 国产亚洲一区二区三区不卡| 国产精品一区二区三区在线观| 全球中文成人在线| 国产精品久久电影观看| 超级碰碰久久| 97精品国产97久久久久久免费| 成人高清免费在线| 中文字幕av一区中文字幕天堂 | 91久色porny| www.17c.com喷水少妇| 国产一区二区三区精品视频| 日韩一区二区三区久久| 视频一区二区三区中文字幕| 久久国产成人精品国产成人亚洲| 精品福利av| 国产精品www在线观看| 国产在线欧美| 野外做受又硬又粗又大视频√| 你懂的国产精品| 男人的天堂成人| 99久久99热这里只有精品| 亚洲自拍三区| 日韩三级在线| 亚洲人一区二区| 色喇叭免费久久综合网| 亚洲国产精品www| 怕怕欧美视频免费大全| 日本午夜精品一区二区| 欧美日韩性在线观看| 亚洲高清在线观看一区| 成人在线免费观看91| 亚洲成人av动漫| 四虎国产精品免费观看| 艳母动漫在线免费观看| 自拍偷拍欧美| 久艹在线免费观看| 亚洲色诱最新| 九九视频精品在线观看| 美女视频黄频大全不卡视频在线播放| 男人女人黄一级| 久久99精品国产麻豆婷婷| 免费在线观看污网站| 国产又粗又猛又爽又黄91精品| 超碰在线免费av| 成人妖精视频yjsp地址| 亚洲综合自拍网| 国产午夜亚洲精品午夜鲁丝片| 中文字幕欧美激情极品| 亚洲同性同志一二三专区| 久久免费公开视频| 欧美性猛交xxxx乱大交蜜桃| 一级黄色av片| 欧美一区日本一区韩国一区| 亚洲精品国产手机| 亚洲精品一区中文字幕乱码| 日韩大片在线永久免费观看网站| 久久亚洲欧美日韩精品专区| 日本孕妇大胆孕交无码| 欧洲成人在线视频| 九七电影院97理论片久久tvb| 亚洲aⅴ日韩av电影在线观看| 成人涩涩网站| 日韩精品欧美在线| 午夜精品999| 少妇高潮喷水久久久久久久久久| 美日韩一级片在线观看| 美女流白浆视频| 国产日韩欧美麻豆| 久久久久久久久久久97| 色婷婷av一区二区三区软件| av老司机久久| 亚洲欧洲在线看| 性国产高清在线观看| 日韩男女性生活视频| 精品国产三级| 欧美在线日韩精品| 精品91在线| 波多野结衣国产精品| 99久久99久久精品免费观看| 成人欧美一区二区三区黑人一| 亚洲成人动漫精品| 91丨九色丨丰满| 亚洲精品视频播放| 久久电影网站| 91精品中国老女人| 嫩草影视亚洲| 搞av.com| 国产乱人伦偷精品视频免下载| 成人网站免费观看| 一区二区三区 在线观看视频| 波多野结衣一二区| 亚洲国产精品久久精品怡红院| 尤物网在线观看| 日韩av手机在线看| 国产精品久久久久av蜜臀| 国产精品av免费| 喷水一区二区三区| 强伦人妻一区二区三区| 亚洲成人免费观看| 亚洲AV无码精品色毛片浪潮| 日韩在线免费高清视频| 国产精品av一区二区三区| 国产美女在线精品免费观看| 你懂的国产精品| www.污网站| 最新国产精品久久精品| 中文字幕+乱码+中文| 亚洲精品视频在线观看视频| 国产精品蜜芽在线观看| 99在线热播| 欧美日韩精品一本二本三本| 亚洲一二区在线观看| 国产精品第13页| 亚洲网站免费观看| 中文字幕日韩欧美在线| 亚洲精品在线影院| 免费一区二区三区在在线视频| 亚洲麻豆一区| 黄色污在线观看| 亚洲成人av一区| 五月天丁香视频| 91精品国产91久久久久久久久| 亚洲不卡视频| 国产传媒久久久| 丁香激情综合五月| 国产在线综合网| 亚洲黄色在线观看| 成人小电影网站| 日本中文不卡| 免费高清视频精品| 99成人在线观看| 欧美一区二区三区视频| 日本片在线观看| 国产91色在线|亚洲| 亚洲三级网站| 91精品人妻一区二区| 色婷婷久久久久swag精品 | 国产日产欧美一区二区视频| 中文字幕免费观看| 中文字幕免费精品一区| 视频91a欧美| 国产专区在线视频| 99在线热播精品免费| 黄色免费av网站| 中文字幕日韩视频| 亚洲超碰在线观看| 91国视频在线| 国产精品午夜在线| 国产黄色一区二区| 4388成人网| 日韩大片在线| 国产伦理在线观看| 午夜成人在线视频| 福利视频在线看| 91牛牛免费视频| 亚洲精选在线| www.99热| 精品久久久久久久久久久院品网| 蜜桃麻豆影像在线观看| 亚欧洲精品在线视频免费观看| 国内精品久久久久影院一蜜桃| 久久精品无码人妻| 亚洲性生活视频在线观看| 精品视频国内| 欧美日韩在线中文| 国产精品欧美极品| 人妻精品无码一区二区| 国产精品美女久久| 一区视频在线| 国产在视频线精品视频| 精品久久久久久亚洲综合网 | 国产精品美女高潮无套| 91精品久久久久久蜜臀| 在线中文字幕播放| 青青草综合视频| 久久av电影| 成人福利在线观看| 亚洲人成在线影院| 成人小视频免费看| 亚洲福利影片在线|