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

進程之間通信方式之消息總線

網絡 通信技術
我們今天想討論的問題主要是第 3 個:傳遞數據,在上面這幾種傳遞數據的方法中,我最喜歡、最常用的就是 Socket 通信。
  • 一、Linux 系統中的進程之間通信(IPC)
  • 二、基于 Socket 通信的優點
  • 三、MQTT 消息總線
  • 四、嵌入式系統中如何利用 MQTT 消息總線
  • 五、Mosquitto: 一個簡單的測試代碼
  • 六、總結
  • 七、資源下載

一、Linux 系統中的進程之間通信(IPC)

作為一名嵌入式軟件開發人員來說,處理進程之間的通信是很常見的事情。從通信目的的角度來看,我們可以把進程之間的通信分成 3 種:

  1. 為了進程的調度: 可以通過信號來實現;
  2. 為了共享資源:可以通過互斥鎖、信號量、讀寫鎖、文件鎖等來實現;
  3. 為了傳遞數據:可以通過共享內存、命名管道、消息隊列、Socket來實現。

關于上面提到的這些、操作系統為我們提供的通信原語,網絡上的各種資料、文章滿天飛,在這里就不啰嗦了。在這些方法中應該如何選擇呢?根據我個人的經驗,貴精不貴多,認真挑選三四樣東西就能完全滿足日常的工作需要。

我們今天想討論的問題主要是第 3 個:傳遞數據,在上面這幾種傳遞數據的方法中,我最喜歡、最常用的就是 Socket 通信。

有些小伙伴可能會說:Socket 通信就是 TCP/IP 的那一套東西,還需要自己管理連接、對數據進行組包、分包,也是挺麻煩的。

沒錯,Socket 通信本身的確需要手動來處理這些底層的東西,但是我們可以給 Socket 穿上一層“外衣”:利用 MQTT 消息總線,在系統的各進程之間進行數據交互,下面我們就一一道來。

二、基于 Socket 通信的優點

這里我就不自己發揮了,直接引用陳碩老師的那本書《Linux 多線程服務端編程》這本書中的觀點(第 65 頁,3.4小節):

1. 跨主機,具有伸縮性

反正都是多進程了,如果一臺機器的處理能力不夠,就能用多臺主機來處理。把進程分散到同一臺局域網的多臺機器上,程序改改 Host:Port 配置就能繼續用。相反,文章開頭部分列出的那些進程之間通信方式都不能跨機器,這就限制了可擴展性。

2. 操作系統會自動回收資源

TCP port 由一個進程獨占,當程序意外退出時,操作系統會自動回收資源,不會給系統留下垃圾,程序重啟之后能比較容易地恢復。

3. 可記錄、可重現

兩個進程通過 TCP 通信,如果一個崩潰了,操作系統會關閉連接,另一個進程幾乎立刻就能感受到,可以快速 failover。當然應用層的心跳是必不可少的。(補充:操作系統本身對于 TCP 連接有一個保活時間,默認是 2 個小時,而且是針對全局的。)

4. 跨語言

服務端和客戶端不必使用同一種編程語言。

1. 陳碩老師描述的是通用的 Socket 通信,因此客戶端和服務端一般位于不同的物理機器上。

2. 在嵌入式開發中,一般都是用同一種編程語言,因此,跨語言這個有點可以忽略不計了。

三、MQTT 消息總線

1. MQTT 是一個通信的機制

對物聯網領域熟悉的小伙伴,對于 MQTT 消息總線一定非常熟悉,目前幾大物聯網云平臺(亞馬孫、阿里云、華為云)都提供了 MQTT 協議的接入方式。

目前,學習 MQTT 最好的文檔是 IBM 的在線手冊:https://developer.ibm.com/zh/technologies/messaging/articles/iot-mqtt-why-good-for-iot/。

這里,我直接把一些重點信息列出來:

  • MQTT協議輕量、簡單、開放和易于實現;
  • MQTT 是基于發布 (Publish)/訂閱 (Subscribe)范式的消息協議;
  • MQTT 工作在 TCP/IP協議族上;
  • 有三種消息發布服務質量;
  • 小型傳輸,開銷很小(固定長度的頭部是 2 字節),協議交換最小化,以降低網絡流量;

MQTT 消息傳輸需要一個中間件,稱為:Broker,其實也就是一個 Server。通信模型如下:

 

  1. MQTT Broker 需要首先啟動;
  2. ClientA 和 ClientB 需要連接到 Broker;
  3. ClientA 訂閱主題 topic_1,ClientB 訂閱主題 topic_2;
  4. ClientA 往 topic_2 這個主題發送消息,就會被 ClientB 接收到;
  5. ClientB 往 topic_1 這個主題發送消息,就會被 ClientA 接收到;

基于 topic 主題的通信方式有一個很大的好處就是解耦,一個客戶端可以訂閱多個 topic,任何接入到總線的其他客戶端都可以往這些 topic 中發送信息(一個客戶端發送消息給自己也是可以的)。

2. MQTT 的實現

MQTT 只是一個協議而已,在 IBM 的在線文檔中可以看到,有很多語言都實現了 MQTT 協議,包括:C/C++、Java、Python、C#、JavaScript、Go、Objective-C等等。那么對于嵌入式開發來說,使用比較多的是這幾個實現:

  • Mosquitto;
  • Paho MQTT;
  • wolfMQTT;
  • MQTTRoute。

在下面,我們會重點介紹 Mosquitto 這個開源實現的編譯和使用方式,這也是我在項目中使用最多的。

3. 在 MQTT 之上,設計自己的通信協議

從上面的描述中可以看出,MQTT 消息總線就是一個通信機制,為通信主體提供了一個傳遞數據的通道而已。

在這個通道之上,我們可以根據實際項目的需要,發送任何格式、編碼的數據。在項目中,我們最常用的就是 json 格式的純文本,這也是各家物聯網云平臺所推薦的方式。如果在文本數據中需要包含二進制數據,那就轉成 BASE64 編碼之后再發送。

四、嵌入式系統中如何利用 MQTT 消息總線

從上面的描述中可以看到,只要在服務端運行著一個 MQTT Broker 服務,每個連接到總線的客戶端都可以靈活地相互收發數據。

我們可以把這個機制應用在嵌入式應用程序的設計中:MQTT Broker 作為一個獨立的服務運行在嵌入式系統本地,其他需要交互的進程,只要連接到本地的這個 Broker,就可以相互發送數據了。運行模型如下:

 

每一個進程只需要訂閱一個固定的 topic(比如:自己的 client Id),那么其他進程如果想要發送數據給它,就直接發送到這個 topic 即可。

1. 一個嵌入式系統的通信框架

我之前開發過一個環境監測系統,采集大氣中的 PM2.5、PM10等污染物參數,在 Contex A8 平臺下開發,需要實現數據記錄(數據庫)、UI 監控界面等功能。

污染物的數據采樣硬件模塊是第三方公司提供的,我們只需要通過該模塊提供的串口協議去控制采樣設備、接收采樣數據即可。最終設計的通信模型如下:

  • UI 進程通過消息總線,發送控制指令給采樣控制進程,采樣控制進程接收到后通過串口發送控制指令給采樣模塊;
  • 采樣控制進程從串口接收采樣模塊發來的PM2.5等數據后,把所有的數據發送到消息總線上指定的 topic 中;
  • UI 進程程訂閱該 topic,接收到數據后,顯示在屏幕上;
  • 數據庫進程也訂閱該 topic,接收到數據后,把數據存儲在 SQLite 數據庫中;

在這個產品中,核心進程是采樣控制進程,負責與采樣模塊的交互。通過把 UI 處理、數據庫處理設計成獨立的進程,降低了系統的復雜性,即使這 2 個進程崩潰了,也不會影響到核心的采樣控制進程。

比如:如果 UI 進程出現錯誤崩潰了,會立刻重啟,啟動之后通過緩存信息知道此刻正在執行采樣工作,于是 UI 進程立刻連接到消息總線、進入采樣數據顯示界面,繼續接收、顯示采樣控制進程發出的PM2.5等數據。

這個通信模型還有另外一個有點:可擴展性。

在項目開發的后期,甲方說需要集成一個第三方的氣體模塊,用來采集大氣中NO、SO2等參數,通信方式是 RS485。

此時擴展這個功能模塊就異常簡單了,直接寫一個獨立的氣體參數進程,接入到消息總線上。這個進程通過 RS485,從第三方氣體模塊接收到NO、SO2等氣體參數時,直接往消息總線上的某個 topic 一丟,UI進程、數據庫進程訂閱這個 topic,就可以立刻接收到氣體相關的數據了。

此外,這個設計模型還有其他一些優點:

  • 并行開發:每個進程可以由不同的人員并行開發,只要相互之間定義好通信協議即可;
  • 調試方便:由于發送的數據都是 manual readable,在開發階段,可以在 PC 機上專門寫一個監控程序,接入到嵌入式系統中的 MQTT Broker 之后,這樣就可以接收到所有進程發出的消息;
  • 通信安全:在產品 release 之后,為了防止其他人偷聽數據(比如 2 中的調試進程),可以為 MQTT Broker 指定一個配置文件,只能允許本地進程(127.0.0.1)連接到消息總線上。

2. 稍微復雜一點的通信模型

在剛才描述的嵌入式系框架設計中,每一個進程都是運行在本地的,所有的消息也都是在系統內進行收發。那么,如果需要把數據傳輸到云端、或者需要從云端接收一些控制指令,又該如何設計呢?

加入一個 MQTT Bridge 橋接模塊即可!也就是再增加一個進程,這個進程同時連接到云端的 MQTT Broker 和本地的 MQTT Broker,通信模型如下:

MQTT Bridge 接收到云端發來的指令時,轉發到本地的消息總線上;

MQTT Bridge 接收到本地的消息時,轉發到云端的消息總線上。

五、Mosquitto: 一個簡單的測試代碼

上面的內容主要討論的是設計的思想,具體到代碼層面,我一般使用的是 Mosquitto 這個開源的實現。

在 Linux 系統中安裝、測試都非常方便,下面就簡單說明一下。

1. 直接通過 apt 來安裝、測試

可以參考這個文檔(https://www.Vultr.com/docs/how-to-install-mosquitto-mqtt-broker-server-on-ubuntu-16-04)來安裝測試。

(1) 安裝

  1. sudo apt-add-repository ppa:mosquitto-dev/mosquitto-ppa 
  2. sudo apt-get update 
  3. sudo apt-get install mosquitto 
  4. sudo apt-get install mosquitto-clients 

(2) 測試

mosquitto broker 在安裝之后會自動啟動,可以用 netstat 查看 1883 端口來確認一下。

接收端:連接到 broker 之后,訂閱 "test" 這個 topic。

  1. mosquitto_sub -t "test" 

發送端:連接到 broker 之后,往 "test" 這個 topic 發送字符串 “hello”。

  1. mosquitto_pub -m "hello" -t "test" 

當發送端執行 mosquitto_pub 時,在接收端的終端窗口中,就可以接收到 “hello” 這個字符串。

2. 通過源碼來手動編譯、測試

通過 apt 來安裝主要是用來簡單的學習和測試,如果要在項目開發中使用 Mosquitto,肯定需要手動編譯,得到頭文件和庫文件,然后復制到應用程序中使用。

(1) 手動編譯、安裝 Mosquitto

我的開發環境是:

編譯器:gcc (Ubuntu 5.4.0-6ubuntu1~16.04.12) 5.4.0 20160609

  • Mosquitto 版本:mosquitto-1.4.9
  • mosquitto-1.4.9 可以到官方網站下載,也可以從文末的網盤中下載,你也可以嘗試更高的版本。

編譯、安裝指令:

  1. make 
  2. make install prefix=$PWD/install 

成功安裝之后,可以在當前目錄的 install 文件夾下看到輸出文件:

  • bin:mqtt 客戶端程序;
  • include:應用程序需要 include 的頭文件;
  • lib:應用程序需要鏈接的庫文件;
  • sbin:mqtt broker 服務程序。

在編譯過程中,如果遇到一些諸如:ares.h、uuid.h 等依賴文件找不到的錯誤,只需要通過 apt 指令安裝響應的開發包即可。

(2) 最簡單的 mosquitto 客戶端代碼

在 mosquitto 源碼中,提供了豐富的 Sample 示例。如果你不樂意去探索,可以直接下載文末的這個網盤中的 Demo 示例程序,這個程序連接到消息總線上之后,訂閱 “topic_01” 這個主題。當然,你也可以修改代碼去發送消息(調用:mosquitto_publish 這個函數)。

進入 c_mqtt 示例代碼目錄之后,可以看到已經包含了 bin、include 和 lib 目錄,它們就是從上面(1)中安裝目錄 install 中復制過來的。

執行 make 指令之后,即可編譯成功,得到可執行文件:mqtt_client。

測試過程如下:

Step1: 啟動 MQTT Broker

在第 1 個終端窗口中,啟動 sbin/mosquitto 這個 Broker 程序。如果你在上面測試中已經啟動了一個 broker,需要先 kill 掉之前的那個 broker,因為它們默認都使用 1883 這個端口,無法共存。

Step2: 啟動接收端程序 mqtt_client

在第 2 個終端窗口中,啟動 mqtt_client 也就是我們的示例代碼編譯得到的可執行程序,它訂閱的 topic 是 “topic_01”。

  1. ./mqtt_client 127.0.0.1 1883 
  • 參數 1: Broker 服務的 IP 地址,因為都是在本地系統中,所以是 127.0.0.1;
  • 參數 2: 端口號,一般默認是1883。

Step3: 啟動發送端程序 bin/mosquitto_pub

在第 3 個終端窗口中,啟動 bin/mosquitto_pub,命令如下:

  1. ./mosquitto_pub -h 127.0.0.1 -p 1883 -m "hello123" -t "topic_01" 
  • 參數 -h:Broker 服務的 IP 地址,因為都是在本地系統中,所以是 127.0.0.1;參數 -p:端口號 1883;
  • 參數 -m:發送的消息內容;
  • 參數 -t:發送的主題 topic。

此時,可以在第 2 個終端窗口(mqtt_client)中打印出接收到的消息。

六、總結

這篇文章主要介紹了嵌入式系統中的一個設計模式:通過消息總線來實現進程之間的通信,并介紹了 Mosquitto 這個開源實現。

在實際的項目中,還需要更加嚴格的權限控制,比如:在接入消息總線時提供用戶名、密碼、設備證書,客戶端的名稱必須滿足指定的格式,訂閱的 topic 必須符合一定的格式等等。

在下一篇文章中,我們繼續討論這個話題,給出一個更具體、更實用的 Demo 例程。

七、資源下載

1. mosquitto-1.4.9.tgz

鏈接:https://pan.baidu.com/s/1izQ3dAlGbHiHwDvKnOSfyg

密碼:dozt

2. Mosquitto Demo 示例代碼

鏈接:https://pan.baidu.com/s/1M-dU3xapNbKyk2w07MtDyw

密碼:aup3

本文轉載自微信公眾號「IOT物聯網小鎮」,可以通過以下二維碼關注。轉載本文請聯系IOT物聯網小鎮公眾號。   

 

責任編輯:武曉燕 來源: IOT物聯網小鎮
相關推薦

2011-08-08 10:02:55

iPhone開發 進程 通信

2023-05-10 07:53:08

.Net開發多進程通信方式

2019-07-09 10:31:51

面試通信進程

2019-11-08 14:47:49

TCPIP網絡

2021-02-24 08:20:33

MQTT物聯網網關開發物聯網

2024-01-05 08:41:31

進程間通信IPC異步通信

2017-06-19 13:36:12

Linux進程消息隊列

2018-07-06 14:00:55

Linux進程線程

2021-07-06 21:30:06

Linux進程通信

2017-03-20 09:50:35

消息隊列架構消息

2018-05-30 13:58:02

Linux進程通信

2018-11-28 09:53:50

游戲服務器線程

2021-09-30 10:45:33

Linux進程通信

2021-02-21 08:31:45

物聯網MQTT消息

2022-07-04 08:29:13

electron通信

2019-11-27 10:36:11

進程通信IPC

2011-08-18 10:59:57

iPhone開發消息通信NSNotificat

2018-05-31 10:57:31

Linux系統進程線程

2020-07-06 07:52:10

Kubernetes網絡通信

2021-05-17 16:24:58

Spring Clou
點贊
收藏

51CTO技術棧公眾號

蜜桃av在线免费观看| 国产精品国产三级国产专区52| 亚洲一区有码| 亚洲综合一二三区| 欧美亚洲丝袜| www.com欧美| 久久综合九色综合欧美狠狠| 插插插亚洲综合网| 强伦人妻一区二区三区| 精品伊人久久| 欧洲精品在线观看| 青春草国产视频| 91在线免费看| 99久久99久久免费精品蜜臀| 91精品视频专区| 日本熟女毛茸茸| 很黄很黄激情成人| 色偷偷噜噜噜亚洲男人| 国产制服丝袜在线| 日韩欧洲国产| 欧美精品123区| 欧美日韩第二页| √8天堂资源地址中文在线| 国产精品久久久久桃色tv| 欧美成人综合一区| 亚洲精品综合网| 国产尤物一区二区在线| 国产精品999999| 国产成人一区二区三区影院在线| 午夜国产一区| xxav国产精品美女主播| 国产一区二区三区四区五区六区 | 性8sex亚洲区入口| 九九热精品视频国产| 四虎永久免费地址| 欧美亚洲国产激情| 亚洲少妇中文在线| 女同毛片一区二区三区| 国产精品17p| 欧美成人猛片aaaaaaa| 久久出品必属精品| 亚洲国产91视频| 欧美日本韩国一区| 奇米视频888| 成人免费在线观看视频| 欧美自拍丝袜亚洲| 黄色免费网址大全| av在线一区不卡| 在线观看中文字幕不卡| 日本老熟妇毛茸茸| 素人一区二区三区| 精品视频在线免费看| 久久人人爽av| 96sao精品免费视频观看| 欧美久久高跟鞋激| 欧美又黄又嫩大片a级| 欧洲亚洲精品| 制服丝袜激情欧洲亚洲| 日韩av自拍偷拍| 日本一区二区乱| 欧美大片在线观看| www.555国产精品免费| 久久精品福利| 亚洲欧美三级在线| 手机看片日韩av| 999精品在线| 欧美日韩国产91| 国产亚洲欧美精品久久久www| 伊人久久成人| 欧美做爰性生交视频| 无码任你躁久久久久久久| 日韩精品亚洲专区| 91麻豆国产语对白在线观看| 亚洲国产精彩视频| 91在线精品一区二区| 日韩精品一区二区三区外面 | 男人添女人下面免费视频| 精品国产黄a∨片高清在线| 欧美女孩性生活视频| 国产精品日日摸夜夜爽| 亚洲aaa级| 色天天综合狠狠色| 久久亚洲国产成人精品性色| 在线亚洲观看| 国产精品揄拍500视频| www.xxx国产| 久久久久一区二区三区四区| 亚洲一区三区电影在线观看| 肉体视频在线| 色国产综合视频| 亚洲国产日韩在线一区| 欧美变态挠脚心| 日韩在线观看免费网站| 亚洲国产综合久久| 日本va欧美va欧美va精品| 亚洲最大成人在线| 免费人成黄页在线观看忧物| 亚洲人成伊人成综合网小说| 精品欧美一区免费观看α√| 日韩大陆av| 日韩av最新在线| 婷婷激情四射网| 亚洲一区国产| 99久久伊人精品影院| 激情视频在线观看免费| 亚洲韩国一区二区三区| 99这里都是精品| 超碰97在线人人| 波多野结衣在线影院| 亚洲国产成人tv| 中文av一区二区三区| 国产香蕉精品| 久久人人爽人人爽爽久久| 久久久精品福利| 国产剧情一区二区三区| 亚洲一区二区三区在线观看视频| 午夜裸体女人视频网站在线观看| 欧美放荡的少妇| 亚洲午夜久久久久久久久红桃| 欧美激情综合| 91精品国产自产在线| 国产在线观看免费网站| 午夜久久久影院| 国产大学生av| 希岛爱理一区二区三区| 国产精品久久久久久五月尺| 日韩亚洲视频在线观看| 午夜久久久影院| 日本美女视频网站| 欧美暴力喷水在线| 成人黄色片在线| 在线观看完整版免费| 日韩欧美一区二区三区久久| 色哟哟视频在线| 亚洲婷婷在线| 99国产视频| a级网站在线播放| 一起草最新网址| 午夜一级黄色片| 91一区二区在线| 日本男女交配视频| 欧美影院视频| 久久高清视频免费| 一级日韩一级欧美| 国产精品成人免费在线| 亚洲天堂av线| 成人写真视频| 国产欧美va欧美va香蕉在| 国产中文在线观看| 欧美综合久久久| 精品伦精品一区二区三区视频密桃| 爽爽淫人综合网网站| 日本亚洲导航| 成人免费黄色| zzijzzij亚洲日本成熟少妇| 国产又大又黄的视频| 亚洲视频资源在线| av在线免费观看不卡| 欧美日本一区二区高清播放视频| 99久久精品免费看国产四区| 国产盗摄精品一区二区酒店| 亚洲精品一区二区三区精华液| 国产精彩视频在线观看| 成+人+亚洲+综合天堂| 99视频在线免费播放| 最新亚洲精品| 国产精品中文字幕久久久| 精品黄色免费中文电影在线播放| 欧美一区二区三区精品| 久久精品第一页| 99精品视频一区二区三区| 精品人妻一区二区三区四区在线| 久久99久久人婷婷精品综合| 国产精品久久久久久久美男 | 精品视频一二| 欧美精品国产精品日韩精品| 五月婷婷六月色| 91福利国产成人精品照片| 日本二区三区视频| 丁香婷婷综合色啪| 久草精品在线播放| 久久久人成影片免费观看| 国产精品毛片va一区二区三区| 精品丝袜在线| 日韩网站在线观看| 肥臀熟女一区二区三区| 色婷婷久久久综合中文字幕| 欧美特黄一级片| 99re热这里只有精品免费视频| 成年网站在线播放| 亚洲伦理精品| 一区二区在线观看网站| 久久电影在线| 91社区国产高清| jizz内谢中国亚洲jizz| 日韩在线视频导航| 日产精品久久久久久久性色| 欧美精品日日鲁夜夜添| 超碰中文字幕在线| 亚洲天堂2016| 美女脱光内衣内裤| 国产suv精品一区二区三区| 天天操天天爱天天爽| 伊人久久婷婷| 亚洲欧美日韩精品综合在线观看| 好吊妞国产欧美日韩免费观看网站 | 久久久久久一区| av在线亚洲一区| 日韩av免费看| 91九色在线播放| 久久综合五月天| 国产69精品久久app免费版| 精品国产91九色蝌蚪| 国产精品乱码一区二区| 日本乱码高清不卡字幕| 日韩欧美激情视频| 一区二区三区成人| 国精产品久拍自产在线网站| 国产人成亚洲第一网站在线播放 | 性欧美激情精品| 哥也色在线视频| 自拍视频国产精品| 狠狠色伊人亚洲综合网站l| 亚洲第一av在线| 午夜精品一二三区| 欧美夫妻性生活| 亚洲影视一区二区| 91久久精品一区二区二区| 免费日韩一级片| 亚洲一二三区不卡| 青青草免费av| 亚洲欧美日韩小说| 亚洲伦理一区二区三区| 亚洲欧洲在线观看av| 日韩福利在线视频| 国产亚洲综合av| 成人片黄网站色大片免费毛片| 91色在线porny| www.88av| 91麻豆免费看片| 五月开心播播网| 91在线云播放| 亚洲第九十七页| 久久久噜噜噜久久人人看| 性欧美13一14内谢| 久久网这里都是精品| 少妇大叫太粗太大爽一区二区| 久久亚洲二区三区| 麻豆精品免费视频| 国产日韩影视精品| 亚洲一级黄色录像| 欧美性高清videossexo| 欧美激情一区二区三区四区| 手机看片国产精品| 国产自产2019最新不卡| 黄色aaaaaa| 国产在线精品一区二区| 成年人网站av| 国产成人在线观看| 日本三级日本三级日本三级极| 9i在线看片成人免费| 国产精品亚洲无码| 国产欧美一区二区精品婷婷| 亚洲欧洲综合网| 亚洲精选免费视频| www.av视频在线观看| 疯狂做受xxxx高潮欧美日本| 无码人妻丰满熟妇奶水区码| 欧美亚洲高清一区二区三区不卡| 中文字幕在线播放av| 欧美一区二区三区在线| 三级视频在线看| 亚洲人高潮女人毛茸茸| 色三级在线观看| 欧美激情亚洲另类| 亚洲淫成人影院| 国产乱肥老妇国产一区二| 亚洲国产视频二区| 老牛影视免费一区二区| 久久人人99| 久久亚洲a v| 久久久久久婷| 黄色一级片免费播放| 99久久久精品免费观看国产蜜| 色欲狠狠躁天天躁无码中文字幕 | 精品亚洲一区二区三区在线观看| 精品欧美不卡一区二区在线观看| 久久伊人精品视频| 性欧美xxx69hd高清| 成人激情视频在线播放| 欧美一级全黄| 国产精品久久成人免费观看| 99这里有精品| 手机av在线网站| www激情久久| 免费人成年激情视频在线观看| 色av成人天堂桃色av| 亚洲女人18毛片水真多| 中文字幕9999| 一区二区三区短视频| 亚洲free性xxxx护士hd| 狠狠色丁香婷婷综合影院| www.亚洲视频.com| 精品系列免费在线观看| 亚洲最大成人网站| 亚洲一卡二卡三卡四卡五卡| 在线观看免费高清视频| 亚洲精品国产精品国自产在线| 国产一二三区在线观看| 国产精品视频中文字幕91| 欧美1区二区| 欧美一区二区三区综合| 久久精品国产99国产| 大又大又粗又硬又爽少妇毛片| 一区二区欧美在线观看| 97国产精品久久久| 国产性猛交xxxx免费看久久| 高清在线视频不卡| 99精彩视频| 一区二区国产在线| 我看黄色一级片| 久久老女人爱爱| 日韩特黄一级片| 亚洲成人免费网站| 人人超在线公开视频| 成人自拍性视频| 91欧美在线| www.日本一区| 国产精品素人一区二区| 中文字幕观看视频| 亚洲一级黄色av| 成人看片网页| 日韩国产欧美一区| 久久久xxx| 欧美熟妇一区二区| 一本久久精品一区二区| 日本啊v在线| 日本亚洲精品在线观看| 国产精品亚洲片在线播放| 亚洲色欲综合一区二区三区| 99九九99九九九视频精品| 国产欧美日韩另类| 日韩黄色av网站| av日韩电影| 视频一区二区三| 久久精品国产99国产精品| 久久久久人妻一区精品色| 欧美日韩国产综合一区二区 | 黄色91在线观看| 手机看片一区二区| 欧洲中文字幕国产精品| 国产精品一在线观看| 天堂在线资源视频| 国产精品美女久久久久久久久 | 2欧美一区二区三区在线观看视频| 亚欧视频在线观看| 亚洲精品网址在线观看| 播放一区二区| 国产精品av免费| 国产成人免费在线观看不卡| 久一视频在线观看| 亚洲精品第一页| 性欧美freehd18| 在线观看污视频| 波多野洁衣一区| 国产女主播喷水视频在线观看| 色偷偷偷亚洲综合网另类| 亚洲精品国产九九九| av天堂永久资源网| 国产精品―色哟哟| www.日日夜夜| 青草热久免费精品视频| 日韩三级在线| 在线观看免费视频黄| 在线日韩av片| 天堂成人av| 欧美精品一区二区三区久久| 蜜臀av性久久久久av蜜臀妖精| 欧美黄色一级网站| 亚洲精品一区二区网址| 一区二区三区日本视频| 无码毛片aaa在线| 久久久久九九视频| 国产熟女一区二区丰满| 91国产美女视频| 久久精品播放| 亚洲制服丝袜在线播放| 欧美日韩高清一区| 91视频欧美| 超碰97免费观看| 久久一留热品黄| 精品免费久久久| 国产成人短视频| 欧美日韩视频一区二区三区| 成人在线一级片| 精品久久久影院| 欧美天堂一区二区| 狠狠干 狠狠操| 亚洲精品老司机| 福利视频在线看|