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

物聯(lián)網(wǎng)網(wǎng)關(guān)開發(fā):基于MQTT消息總線的設(shè)計過程(下)

物聯(lián)網(wǎng) 物聯(lián)網(wǎng)應(yīng)用
在上一篇文章中物聯(lián)網(wǎng)網(wǎng)關(guān)開發(fā):基于MQTT消息總線的設(shè)計過程(上),我們聊了在一個物聯(lián)網(wǎng)系統(tǒng)的網(wǎng)關(guān)中,如何利用 MQTT 消息總線,在嵌入式系統(tǒng)內(nèi)部實現(xiàn)多個進(jìn)程之間的相互通信問題。

 一、前言

在上一篇文章中物聯(lián)網(wǎng)網(wǎng)關(guān)開發(fā):基于MQTT消息總線的設(shè)計過程(上),我們聊了在一個物聯(lián)網(wǎng)系統(tǒng)的網(wǎng)關(guān)中,如何利用 MQTT 消息總線,在嵌入式系統(tǒng)內(nèi)部實現(xiàn)多個進(jìn)程之間的相互通信問題。

這個通信模型的最大幾個優(yōu)點是:

  1. 模塊之間解耦合;
  2. 各模塊之間可以并行開發(fā);
  3. 把 TCP 鏈接和粘包問題交給消息總線處理,我們只需要處理業(yè)務(wù)層的東西;
  4. 調(diào)試方便;

以上只是描述了在一個嵌入式系統(tǒng)內(nèi)部,進(jìn)程之間的通信方式,那么網(wǎng)關(guān)如何與云平臺進(jìn)行交互呢?

在上一篇文章中已經(jīng)提到過:網(wǎng)關(guān)與云平臺之間的通信方式一般都是客戶指定的,就那么幾種(阿里云、華為云、騰訊云、亞馬遜AWS平臺)。一般都要求網(wǎng)關(guān)與云平臺之間處于長連接的狀態(tài),這樣云端的各種指令就可以隨時發(fā)送到網(wǎng)關(guān)。

這一篇文章,我們就來聊一聊這部分內(nèi)容。

在公眾號回復(fù):mqtt,獲取示例代碼的網(wǎng)盤地址。

二、與云平臺之間的 MQTT 連接

目前的幾大物聯(lián)網(wǎng)云平臺,都提供了不同的接入方式。對于網(wǎng)關(guān)來說,應(yīng)用最多的就是 MQTT 接入。

我們知道,MQTT 只是一個協(xié)議而已,不同的編程語言中都有實現(xiàn),在 C 語言中也有好幾個實現(xiàn)。

在網(wǎng)關(guān)內(nèi)部,運行著一個后臺 deamon: MQTT Broker,其實就是 mosquitto 這個可執(zhí)行程序,它充當(dāng)著消息總線的功能。這里請大家注意:因為這個消息總線是運行在嵌入式系統(tǒng)的內(nèi)部,接入總線的客戶端就是需要相互通信的那些進(jìn)程。這些進(jìn)程的數(shù)量是有限的,即使是一個比較復(fù)雜的系統(tǒng),最多十幾個進(jìn)程也就差不多了。因此,mosquitto 這個實現(xiàn)是完全可以支撐系統(tǒng)負(fù)載的。

那么,如果在云端部署一個 MQTT Broker,理論上是可以直接使用 mosquitto 這個實現(xiàn)來作為消息總線的,但是你要評估接入的客戶端(也就是網(wǎng)關(guān))在一個什么樣的數(shù)量級,考慮到并發(fā)的問題,一定要做壓力測試。

對于后臺開發(fā),我的經(jīng)驗不多,不敢(也不能)多言,誤導(dǎo)大家就罪過了。不過,對于一般的學(xué)習(xí)和測試來說,在云端直接部署 mosquitto 作為消息總線,是沒有問題的。

三、Proc_Bridge 進(jìn)程:外部和內(nèi)部消息總線之間的橋接器

下面這張圖,說明了 Proc_Bridge 進(jìn)程在這個模型中的作用:


  1. 從云平臺消息總線接收到的消息,需要轉(zhuǎn)發(fā)到內(nèi)部的消息總線;
  2. 從內(nèi)部消息總線接收到的消息,需要轉(zhuǎn)發(fā)到云平臺的消息總線;

如果用 mosquitto 來實現(xiàn),應(yīng)該如何來實現(xiàn)呢?

1. mosquitto 的 API 接口

mosquitto 這個實現(xiàn)是基于回調(diào)函數(shù)的機制來運行的,例如:

  1. // 連接成功時的回調(diào)函數(shù) 
  2. void my_connect_callback(struct mosquitto *mosq, void *obj, int rc) 
  3.     // ... 
  4.  
  5. // 連接失敗時的回調(diào)函數(shù) 
  6. void my_disconnect_callback(struct mosquitto *mosq, void *obj, int result) 
  7.     // ... 
  8.  
  9. // 接收到消息時的回調(diào)函數(shù) 
  10. void my_message_callback(struct mosquitto *mosq, void *obj, const struct mosquitto_message *message) 
  11.   // .. 
  12.  
  13. int main() 
  14.     // 其他代碼 
  15.     // ... 
  16.      
  17.     // 創(chuàng)建一個 mosquitto 對象 
  18.     struct mosquitto g_mosq = mosquitto_new("client_name"trueNULL); 
  19.      
  20.     // 注冊回調(diào)函數(shù) 
  21.     mosquitto_connect_callback_set(g_mosq, my_connect_callback); 
  22.     mosquitto_disconnect_callback_set(g_mosq, my_disconnect_callback); 
  23.     mosquitto_message_callback_set(g_mosq, my_message_callback); 
  24.     // 這里還有其他的回調(diào)函數(shù)設(shè)置 
  25.    
  26.     // 開始連接到消息總線 
  27.     mosquitto_connect(g_mosq, "127.0.0.1", 1883, 60); 
  28.    
  29.     while(1) 
  30.     { 
  31.       int rc = mosquitto_loop(g_mosq, -1, 1); 
  32.       if (rc) { 
  33.         printf("mqtt_portal: mosquitto_loop rc = %d \n", rc); 
  34.         sleep(1); 
  35.         mosquitto_reconnect(g_mosq); 
  36.       } 
  37.     } 
  38.     mosquitto_destroy(g_mosq); 
  39.     mosquitto_lib_cleanup(); 
  40.     return 0; 

以上代碼就是一個 mosquitto 客戶端的最簡代碼了,使用回調(diào)函數(shù)的機制,讓程序的開發(fā)非常簡單。

mosquitto 把底層的細(xì)節(jié)問題都幫助我們處理了,只要我們注冊的函數(shù)被調(diào)用了,就說明發(fā)生了我們感興趣的事件

這樣的回調(diào)機制在各種開源軟件中使用的比較多,比如:glib 里的定時器、libevent通訊處理libmodbus 里的數(shù)據(jù)處理、linux 內(nèi)核中的驅(qū)動開發(fā)和定時器,都是這個套路,一通百通!

在網(wǎng)關(guān)中的每個進(jìn)程,只需要添加上面這部分代碼,就可以掛載到消息總線上,從而可以與其它進(jìn)程進(jìn)行收發(fā)數(shù)據(jù)了。

2. 利用 UserData 指針,實現(xiàn)多個 MQTT 連接

上面的實例僅僅是連接到一個消息總線上,對于一個普通的進(jìn)程來說,達(dá)到了通信的目的。

但是對于 Proc_Bridge 進(jìn)程來說,還沒有達(dá)到目的,因為這個進(jìn)程處于橋接的位置,需要同時連接到遠(yuǎn)程和本地這兩個消息總線上。那么應(yīng)該如何實現(xiàn)呢?

看一下 mosquitto_new 這個函數(shù)的簽名:

  1. /* 
  2.  * obj - A user pointer that will be passed as an argument to any 
  3.  *      callbacks that are specified. 
  4. */ 
  5. /* 
  6. 最后一個參數(shù)的作用是:可以設(shè)置一個用戶自己的數(shù)據(jù)(作為指針傳入),那么 
  7. mosquitto 在回調(diào)我們的注冊的任何一個函數(shù)時,都會把這個指針傳入。 
  8.  
  9. 因此,我們可以利用這個參數(shù)來區(qū)分這個連接是遠(yuǎn)程連接?還是本地連接。 
  10. */ 
  11. libmosq_EXPORT struct mosquitto *mosquitto_new(const char *id, bool clean_session, void *obj); 

所以,我們可以定義一個結(jié)構(gòu)體變量,把一個 MQTT 連接的所有信息都記錄在這里,然后注冊給 mosquitto。當(dāng) mosquitto 回調(diào)函數(shù)時,把這個結(jié)構(gòu)體變量的指針回傳給我們,這樣就拿到了這個連接的所有數(shù)據(jù),在某種程度上來說,這也是一種面向?qū)ο蟮乃枷搿?/p>

  1. // 從來表示一個 MQTT 連接的結(jié)構(gòu)體 
  2. typedef struct{ 
  3.   char *id; 
  4.   char *name
  5.   char *pw; 
  6.   char *host; 
  7.   int port; 
  8.   pthread_t tHandle; 
  9.   struct mosquitto *mosq; 
  10.   int mqtt_num; 
  11. }MQData; 

完整的代碼已經(jīng)放到網(wǎng)盤里了,為了讓你先從原理上看明白,我把關(guān)鍵幾個地方的代碼貼在這里:

  1. // 分配結(jié)構(gòu)體變量 
  2. MQData userData = (MQData *)malloc(sizeof(MQData)); 
  3.  
  4. // 設(shè)置屬于這里連接的參數(shù): id, name 等等 
  5.  
  6. // 創(chuàng)建 mosquitto 對象時,傳入 userData。 
  7. struct mosquitto *mosq = mosquitto_new(userData->id, true, userData); 
  8.  
  9. // 在回調(diào)函數(shù)中,把 obj 指針前轉(zhuǎn)成 MQData 指針 
  10. static void messageCB(struct mosquitto *mosq, void *obj, const struct mosquitto_message *message) 
  11.   MQData *userData = (MQData *)obj; 
  12.    
  13.   // 此時就可以根據(jù) userData 指針中的內(nèi)容分辨出這是哪一個鏈接了 

另外一個問題:不知道你是否注意到示例中的 mosquitto_loop() 這個函數(shù)?這個函數(shù)需要放在 while 死循環(huán)中不停的調(diào)用,才能出發(fā) mosuiqtto 內(nèi)部的事件。(其實在 mosuiqtto 中,還提供了另一個簡化的函數(shù) mosquitto_loop_forever)。

也就是說:在每個連接中,需要持續(xù)的觸發(fā) mosquitto 底層的事件,才能讓消息系統(tǒng)順利的收發(fā)。因此,在示例代碼中,使用兩個線程分別連接到云平臺的總線和內(nèi)部的總線。

四、總結(jié)

經(jīng)過這兩篇文章,基本上把一個物聯(lián)網(wǎng)系統(tǒng)的網(wǎng)關(guān)中,最基本的通信模型聊完了,相當(dāng)于是一個程序的骨架吧,剩下的事情就是處理業(yè)務(wù)層的細(xì)節(jié)問題了。

萬里長征,這才是第一步!

對于一個網(wǎng)關(guān)來說,還有其他更多的問題需要處理,比如:MQTT 連接的鑒權(quán)(用戶名+密碼,證書)、通信數(shù)據(jù)的序列化和反序列化、加密和解密等等,以后慢慢聊吧,希望我們一路前行!

 

責(zé)任編輯:姜華 來源: IOT物聯(lián)網(wǎng)小鎮(zhèn)
相關(guān)推薦

2021-02-21 08:31:45

物聯(lián)網(wǎng)MQTT消息

2019-12-27 10:42:45

HTTPMQTT物聯(lián)網(wǎng)

2021-09-07 05:52:26

物聯(lián)網(wǎng)網(wǎng)關(guān)工業(yè)物聯(lián)網(wǎng)物聯(lián)網(wǎng)

2023-01-31 15:35:46

物聯(lián)網(wǎng)邊緣計算工業(yè)物聯(lián)網(wǎng)

2022-01-08 21:49:00

物聯(lián)網(wǎng)網(wǎng)關(guān)PLC物聯(lián)網(wǎng)

2020-10-31 21:40:35

物聯(lián)網(wǎng)網(wǎng)關(guān)物聯(lián)網(wǎng)IOT

2020-07-08 07:36:40

物聯(lián)網(wǎng)數(shù)據(jù)技術(shù)

2023-09-18 15:36:37

物聯(lián)網(wǎng)物聯(lián)網(wǎng)生態(tài)系統(tǒng)

2020-10-11 17:01:18

物聯(lián)網(wǎng)網(wǎng)關(guān)工業(yè)物聯(lián)網(wǎng)物聯(lián)網(wǎng)

2020-07-12 15:18:38

物聯(lián)網(wǎng)傳感器技術(shù)

2020-11-23 08:13:27

物聯(lián)網(wǎng)

2014-10-29 10:33:46

物聯(lián)網(wǎng)

2022-11-02 10:59:34

2019-11-28 14:11:00

物聯(lián)網(wǎng)網(wǎng)關(guān)物聯(lián)網(wǎng)IOT

2021-12-02 18:18:21

消費網(wǎng)關(guān)工業(yè)物聯(lián)網(wǎng)網(wǎng)關(guān)物聯(lián)網(wǎng)

2023-09-19 16:10:28

2023-10-20 13:43:16

2019-09-10 13:39:38

物聯(lián)網(wǎng)網(wǎng)關(guān)物聯(lián)網(wǎng)IOT

2021-01-12 09:51:43

工業(yè)物聯(lián)網(wǎng)物聯(lián)網(wǎng)網(wǎng)關(guān)物聯(lián)網(wǎng)

2021-01-07 07:15:27

工業(yè)物聯(lián)網(wǎng)物聯(lián)網(wǎng)網(wǎng)關(guān)物聯(lián)網(wǎng)
點贊
收藏

51CTO技術(shù)棧公眾號

男女啪啪的视频| 欧美激情免费视频| 男女视频一区二区三区| 日日夜夜精品一区| 国产成人综合网| 91成人在线播放| 91禁男男在线观看| jazzjazz国产精品麻豆| 色婷婷综合久色| 潘金莲一级淫片aaaaa免费看| 刘亦菲久久免费一区二区| 久久在线精品| 欧美高清视频一区二区| 男人的天堂av网| ady日本映画久久精品一区二区| 日韩欧美国产网站| 久久久久久久久网| 国产中文在线| av福利精品导航| 91九色视频导航| 日韩在线视频不卡| 黄色成人在线网址| 最新的欧美黄色| 三级黄色片网站| 日韩欧美久久| 欧美视频一区二区在线观看| 久久久久免费看黄a片app| 嫩草香蕉在线91一二三区| 久久综合丝袜日本网| 成人女人免费毛片| 一级黄色片免费| 久久亚洲一区| 91精品成人久久| 青青草手机视频在线观看| 成人6969www免费视频| 日韩成人在线免费观看| 国产精九九网站漫画| 欧美美女被草| 欧美无砖砖区免费| 超碰97人人射妻| 鲁鲁在线中文| 香蕉av福利精品导航| 玖玖精品在线视频| 操你啦视频在线| 中文字幕五月欧美| 亚洲午夜在线观看| 国产视频网址在线| 国产视频一区在线播放| 蜜桃传媒一区二区| 少妇人妻一区二区| 成人精品小蝌蚪| 高清国语自产拍免费一区二区三区| 97人妻精品一区二区三区动漫 | 97国产精东麻豆人妻电影 | 欧美影院久久久| 日本一本高清视频| 亚洲伦理一区| 2018国产精品视频| 成年人视频在线免费看| 亚洲影视综合| 日韩美女主播视频| 黄色污污网站在线观看| 久久成人在线| 国产精品99导航| 国产男人搡女人免费视频| 日韩精品一区第一页| 国产精品18久久久久久首页狼 | 一区二区三区在线播放视频| 日韩电影二区| 久久久久999| 久久国产免费观看| 亚洲精品美女| 国产成人精品综合久久久| 日本欧美www| 精品一二三四区| 91成人伦理在线电影| 亚洲AV无码一区二区三区少妇| 国产·精品毛片| 久久99精品久久久久子伦| 日本高清中文字幕二区在线| 国产欧美日韩另类一区| 中文字幕中文字幕一区三区| 污污片在线免费视频| 婷婷成人激情在线网| 北条麻妃在线一区| 精品自拍视频| 精品少妇一区二区三区免费观看| 喷水视频在线观看| 四虎精品一区二区| 国产精品女人久久久| 韩国一区二区三区| 超碰在线观看97| 性感美女一级片| 久久婷婷成人综合色| 男女免费视频网站| 巨大荫蒂视频欧美另类大| 最新国产の精品合集bt伙计| 成人一区二区av| 性感女国产在线| 欧美色老头old∨ideo| 国产精品熟女一区二区不卡| 日韩最新在线| 久久艳片www.17c.com| 国产成人无码精品久在线观看 | 中文字幕在线观看免费| 国产毛片精品视频| 蜜桃传媒视频麻豆第一区免费观看 | 91蝌蚪porny| 秋霞在线一区二区| 国模套图日韩精品一区二区| 91精品国产乱| 亚洲ⅴ国产v天堂a无码二区| 亚洲高清电影| 成人伊人精品色xxxx视频| 青青草免费在线| 夜夜爽夜夜爽精品视频| 手机看片一级片| 偷拍精品福利视频导航| 欧美夫妻性生活xx| 88av在线视频| 国产欧美久久久精品影院| 国产视频九色蝌蚪| 日韩综合一区二区三区| 日韩亚洲精品视频| 一级一级黄色片| xf在线a精品一区二区视频网站| 欧美少妇在线观看| 国产毛片精品久久| 国产一区二区三区高清在线观看| 日韩三级免费看| 成人妖精视频yjsp地址| 91成人在线视频观看| 成人久久网站| 伊人久久免费视频| 四虎成人在线观看| 91丨porny丨最新| 激情伊人五月天| 成人线上播放| 久久久伊人日本| 免费看黄网站在线观看| 免费看日韩av| 神马久久影院| 欧美激情一区二区三区高清视频| 中文字幕在线播放av| 久久久久久免费| 91国视频在线| 亚洲三级精品| 日本精品久久久| 清纯唯美亚洲色图| 色综合夜色一区| 一区二区精品免费| 日韩av在线免费观看不卡| 免费在线观看一区二区| 国产精品极品美女在线观看| 亚洲性线免费观看视频成熟| 波多野结衣爱爱| 欧美高清一级片在线观看| 91网址在线播放| 国产精品99一区二区三| 成人福利网站在线观看| 成人av免费| 欧美sm美女调教| 日韩视频免费观看高清| 91一区二区三区在线播放| 国模吧无码一区二区三区| 免费精品国产| 国产精品成人av性教育| 日本在线视频站| 日韩免费看网站| 青青草av在线播放| 91蜜桃在线免费视频| 国产熟人av一二三区| 欧美理论电影大全| 国产日韩欧美黄色| 牛牛精品视频在线| 亚洲精品电影久久久| 国产视频1区2区| 日本一区二区不卡视频| 三级黄色片免费观看| 好吊日精品视频| 久久综合一区二区三区| 成人久久网站| 久久久久久av| 国产精品秘入口| 欧美一区二区黄| 欧美精品二区三区| 中文字幕日本不卡| 国产xxxxxxxxx| 久久精品国产在热久久| 国产1区2区3区中文字幕| 天堂网av成人| 91老司机精品视频| 性欧美18~19sex高清播放| 中文字幕亚洲在线| 色窝窝无码一区二区三区成人网站| 色综合欧美在线| 黄色一级片中国| 久久伊99综合婷婷久久伊| 一级做a爱视频| 久久精品1区| 国产在线观看欧美| 日韩精品一卡| 久久av二区| 免费看一区二区三区| 国产91九色视频| 超碰在线97国产| 久久精品久久久久久国产 免费| 婷婷开心激情网| 日韩久久精品一区| 一区二区小视频| 日韩欧美在线第一页| 久久国产在线观看| 亚洲视频一区在线观看| 91精品人妻一区二区| 国产盗摄女厕一区二区三区| 免费看污黄网站| 亚洲影音一区| 午夜免费福利小电影| 66视频精品| 亚洲精品无人区| 综合国产视频| 国产一区在线免费| 91精品久久久久久综合五月天 | 天天操天天射天天爽| 中文字幕亚洲不卡| 大胸美女被爆操| 久久久五月婷婷| 亚洲色图14p| 99精品一区二区三区| 香蕉视频在线观看黄| 国产一区二区日韩精品| 91女神在线观看| 蜜臀av性久久久久蜜臀av麻豆| 欧美aⅴ在线观看| 亚洲视频二区| 男女高潮又爽又黄又无遮挡| 亚洲国产欧美国产综合一区| av日韩在线看| 国产精品jizz在线观看美国| 69精品丰满人妻无码视频a片| 婷婷中文字幕一区| 最新黄色av网站| 国产精品精品| 强开小嫩苞一区二区三区网站| 日产精品一区二区| 亚洲一区二区四区| 日韩高清欧美| 综合视频在线观看| 亚洲综合婷婷| 91网站在线观看免费| 国产精品v一区二区三区| 黄色特一级视频| 在线成人欧美| 免费看的黄色大片| 国产精品美女久久久| 国产男女在线观看| 日韩高清不卡一区二区| 91人人澡人人爽人人精品| 日韩电影免费在线看| 一女二男3p波多野结衣| 国产精品资源网站| www国产视频| 国产无一区二区| 国产亚洲精品久久久久久豆腐| 国产精品视频yy9299一区| 91精品少妇一区二区三区蜜桃臀| 亚洲美女区一区| 国产精品成人久久| 欧美性xxxx18| 伊人久久亚洲综合| 欧美一区二区三区日韩| 亚洲精品国产手机| 亚洲男人的天堂网站| 亚洲成a人v欧美综合天堂麻豆| 久久影院中文字幕| 高清在线视频不卡| 国产精品亚发布| 亚洲精品国产九九九| 久久久免费看| 99久久夜色精品国产亚洲96| 大陆极品少妇内射aaaaaa| 国产日韩精品视频一区二区三区| 色婷婷综合久久久久中文字幕| 精品在线观看视频| 一本色道久久hezyo无码| 久久老女人爱爱| √天堂中文官网8在线| 精品久久久久久久久久国产 | 老司机免费视频一区二区| 中文字幕 欧美 日韩| 99久久精品费精品国产一区二区 | 综合久久给合久久狠狠狠97色| 日韩 欧美 精品| 欧美日韩视频在线一区二区| 免费观看黄色一级视频| 最近中文字幕2019免费| 日韩电影毛片| 亚洲最大的网站| 精品99在线| 日日摸日日碰夜夜爽无码| 日本不卡一区二区三区| 欧美性生交xxxxx| 国产精品久久久久天堂| av黄色在线看| 欧美一卡二卡三卡四卡| 国产高清免费在线播放| 久久久久久久久国产| 欧美a视频在线| 欧美国产一二三区| 亚洲日本欧美| 韩国三级丰满少妇高潮| 国产精品人妖ts系列视频| 97免费在线观看视频| 91精品国产福利在线观看| 国产天堂在线| 日本成人精品在线| 国产精品17p| 日本免费黄色小视频| 美女一区二区久久| 大又大又粗又硬又爽少妇毛片 | 精品国产伦一区二区三区观看方式| 五月婷婷综合久久| 久久精品久久久久| 69堂精品视频在线播放| 久久久久网址| 亚洲每日更新| 久久国产劲爆∧v内射| 亚洲欧美日韩系列| 在线视频1卡二卡三卡| 亚洲欧美国内爽妇网| 丁香花视频在线观看| 99九九视频| 欧美日韩精品一本二本三本| 看看黄色一级片| 国产精品传媒视频| 正在播放亚洲精品| 国产亚洲成av人片在线观看桃| 在线天堂中文资源最新版| 国产精品区一区| 精品69视频一区二区三区Q| 亚洲成人精品在线播放| 自拍av一区二区三区| 国产三级小视频| 美日韩在线视频| 视频一区日韩精品| 日本国产中文字幕| 高潮精品一区videoshd| 久久久无码精品亚洲国产| 精品毛片乱码1区2区3区| 欧洲中文在线| 国产福利不卡| 中文日韩欧美| 久久中文字幕精品| 欧美色视频一区| 成视频免费观看在线看| 999热视频在线观看| 国产精品99免费看| 在线看黄色的网站| 欧美日韩免费区域视频在线观看| 在线观看xxx| 国产精品27p| 久久久人成影片免费观看| 国内精品国产三级国产aⅴ久| 一区二区在线看| 手机福利在线| 香蕉成人伊视频在线观看| 色哟哟国产精品色哟哟| 欧美中文字幕在线视频| 精品欧美激情在线观看| 污污网站免费观看| 一区二区三区精品在线| 亚洲av激情无码专区在线播放| 国产精品r级在线| 久久久久久久久丰满| 日本人添下边视频免费| 色偷偷88欧美精品久久久| 美女国产在线| 99精品在线直播| 久久久久久久尹人综合网亚洲| 成人午夜免费影院| 精品国精品国产尤物美女| 玛雅亚洲电影| 久久最新免费视频| 91免费观看在线| 99国产揄拍国产精品| 97国产精品免费视频| 大片网站久久| 大桥未久恸哭の女教师| 欧美日韩精品专区| а√在线中文网新版地址在线| 手机在线观看国产精品| 高清久久久久久| 中文字幕欧美人妻精品一区蜜臀 | 日韩精品国内| 国产成人精品1024| 香蕉污视频在线观看| 九九热最新视频//这里只有精品| 思热99re视热频这里只精品| 国产亚洲色婷婷久久| 91黄视频在线|