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

Linux進(jìn)程間通信——使用消息隊(duì)列

系統(tǒng) Linux
Linux提供了一系列消息隊(duì)列的函數(shù)接口來讓我們方便地使用它來實(shí)現(xiàn)進(jìn)程間的通信。它的用法與其他兩個(gè)System V PIC機(jī)制,即信號(hào)量和共享內(nèi)存相似。

一、什么是消息隊(duì)列

消息隊(duì)列提供了一種從一個(gè)進(jìn)程向另一個(gè)進(jìn)程發(fā)送一個(gè)數(shù)據(jù)塊的方法。 每個(gè)數(shù)據(jù)塊都被認(rèn)為含有一個(gè)類型,接收進(jìn)程可以獨(dú)立地接收含有不同類型的數(shù)據(jù)結(jié)構(gòu)。我們可以通過發(fā)送消息來避免命名管道的同步和阻塞問題。但是消息隊(duì)列與命名管道一樣,每個(gè)數(shù)據(jù)塊都有一個(gè)***長(zhǎng)度的限制。

Linux用宏MSGMAX和MSGMNB來限制一條消息的***長(zhǎng)度和一個(gè)隊(duì)列的***長(zhǎng)度。

二、在Linux中使用消息隊(duì)列

Linux提供了一系列消息隊(duì)列的函數(shù)接口來讓我們方便地使用它來實(shí)現(xiàn)進(jìn)程間的通信。它的用法與其他兩個(gè)System V PIC機(jī)制,即信號(hào)量和共享內(nèi)存相似。

1、msgget函數(shù)

該函數(shù)用來創(chuàng)建和訪問一個(gè)消息隊(duì)列。它的原型為:

int msgget(key_t, key, int msgflg);

與其他的IPC機(jī)制一樣,程序必須提供一個(gè)鍵來命名某個(gè)特定的消息隊(duì)列。msgflg是一個(gè)權(quán)限標(biāo)志,表示消息隊(duì)列的訪問權(quán)限,它與文件的訪問權(quán)限一樣。msgflg可以與IPC_CREAT做或操作,表示當(dāng)key所命名的消息隊(duì)列不存在時(shí)創(chuàng)建一個(gè)消息隊(duì)列,如果key所命名的消息隊(duì)列存在時(shí),IPC_CREAT標(biāo)志會(huì)被忽略,而只返回一個(gè)標(biāo)識(shí)符。

它返回一個(gè)以key命名的消息隊(duì)列的標(biāo)識(shí)符(非零整數(shù)),失敗時(shí)返回-1.

2、msgsnd函數(shù)

該函數(shù)用來把消息添加到消息隊(duì)列中。它的原型為:

int msgsend(int msgid, const void *msg_ptr, size_t msg_sz, int msgflg);

msgid是由msgget函數(shù)返回的消息隊(duì)列標(biāo)識(shí)符。

msg_ptr是一個(gè)指向準(zhǔn)備發(fā)送消息的指針,但是消息的數(shù)據(jù)結(jié)構(gòu)卻有一定的要求,指針msg_ptr所指向的消息結(jié)構(gòu)一定要是以一個(gè)長(zhǎng)整型成員變量開始的結(jié)構(gòu)體,接收函數(shù)將用這個(gè)成員來確定消息的類型。所以消息結(jié)構(gòu)要定義成這樣:

  1. struct my_message{   
  2.  
  3.     long int message_type;   
  4.  
  5.     /* The data you wish to transfer*/   
  6.  
  7. };   

msg_sz是msg_ptr指向的消息的長(zhǎng)度,注意是消息的長(zhǎng)度,而不是整個(gè)結(jié)構(gòu)體的長(zhǎng)度,也就是說msg_sz是不包括長(zhǎng)整型消息類型成員變量的長(zhǎng)度。

msgflg用于控制當(dāng)前消息隊(duì)列滿或隊(duì)列消息到達(dá)系統(tǒng)范圍的限制時(shí)將要發(fā)生的事情。

如果調(diào)用成功,消息數(shù)據(jù)的一分副本將被放到消息隊(duì)列中,并返回0,失敗時(shí)返回-1.

3、msgrcv函數(shù)

該函數(shù)用來從一個(gè)消息隊(duì)列獲取消息,它的原型為

int msgrcv(int msgid, void *msg_ptr, size_t msg_st, long int msgtype, int msgflg);

msgid, msg_ptr, msg_st的作用也函數(shù)msgsnd函數(shù)的一樣。

msgtype可以實(shí)現(xiàn)一種簡(jiǎn)單的接收優(yōu)先級(jí)。如果msgtype為0,就獲取隊(duì)列中的***個(gè)消息。如果它的值大于零,將獲取具有相同消息類型的***個(gè)信息。如果它小于零,就獲取類型等于或小于msgtype的絕對(duì)值的***個(gè)消息。

msgflg用于控制當(dāng)隊(duì)列中沒有相應(yīng)類型的消息可以接收時(shí)將發(fā)生的事情。

調(diào)用成功時(shí),該函數(shù)返回放到接收緩存區(qū)中的字節(jié)數(shù),消息被復(fù)制到由msg_ptr指向的用戶分配的緩存區(qū)中,然后刪除消息隊(duì)列中的對(duì)應(yīng)消息。失敗時(shí)返回-1.

4、msgctl函數(shù)

該函數(shù)用來控制消息隊(duì)列,它與共享內(nèi)存的shmctl函數(shù)相似,它的原型為:

int msgctl(int msgid, int command, struct msgid_ds *buf);

command是將要采取的動(dòng)作,它可以取3個(gè)值,

IPC_STAT:把msgid_ds結(jié)構(gòu)中的數(shù)據(jù)設(shè)置為消息隊(duì)列的當(dāng)前關(guān)聯(lián)值,即用消息隊(duì)列的當(dāng)前關(guān)聯(lián)值覆蓋msgid_ds的值。

IPC_SET:如果進(jìn)程有足夠的權(quán)限,就把消息列隊(duì)的當(dāng)前關(guān)聯(lián)值設(shè)置為msgid_ds結(jié)構(gòu)中給出的值

IPC_RMID:刪除消息隊(duì)列

buf是指向msgid_ds結(jié)構(gòu)的指針,它指向消息隊(duì)列模式和訪問權(quán)限的結(jié)構(gòu)。msgid_ds結(jié)構(gòu)至少包括以下成員: 

  1. struct msgid_ds      
  2. {          
  3. uid_t shm_perm.uid;  
  4.         uid_t shm_perm.gid; 
  5.         mode_t shm_perm.mode; 
  6. };    

成功時(shí)返回0,失敗時(shí)返回-1.

三、使用消息隊(duì)列進(jìn)行進(jìn)程間通信

馬不停蹄,介紹完消息隊(duì)列的定義和可使用的接口之后,我們來看看它是怎么讓進(jìn)程進(jìn)行通信的。由于可以讓不相關(guān)的進(jìn)程進(jìn)行行通信,所以我們?cè)谶@里將會(huì)編寫兩個(gè)程序,msgreceive和msgsned來表示接收和發(fā)送信息。根據(jù)正常的情況,我們?cè)试S兩個(gè)程序都可以創(chuàng)建消息,但只有接收者在接收完***一個(gè)消息之后,它才把它刪除。

接收信息的程序源文件為msgreceive.c的源代碼為:

  1. #include <unistd.h>   
  2.  
  3. #include <stdlib.h>   
  4.  
  5. #include <stdio.h>   
  6.  
  7. #include <string.h>   
  8.  
  9. #include <errno.h>   
  10.  
  11. #include <sys/msg.h>   
  12.  
  13.    
  14.  
  15. struct msg_st   
  16.  
  17. {   
  18.  
  19.     long int msg_type;   
  20.  
  21.     char text[BUFSIZ];   
  22.  
  23. };   
  24.  
  25.    
  26.  
  27. int main()   
  28.  
  29. {   
  30.  
  31.     int running = 1;   
  32.  
  33.     int msgid = -1;   
  34.  
  35.     struct msg_st data;   
  36.  
  37.     long int msgtype = 0; //注意1   
  38.  
  39.    
  40.  
  41.     //建立消息隊(duì)列   
  42.  
  43.     msgid = msgget((key_t)1234, 0666 | IPC_CREAT);   
  44.  
  45.     if(msgid == -1)   
  46.  
  47.     {   
  48.  
  49.         fprintf(stderr, "msgget failed with error: %d\n", errno);   
  50.  
  51.         exit(EXIT_FAILURE);   
  52.  
  53.     }   
  54.  
  55.     //從隊(duì)列中獲取消息,直到遇到end消息為止   
  56.  
  57.     while(running)   
  58.  
  59.     {   
  60.  
  61.         if(msgrcv(msgid, (void*)&data, BUFSIZ, msgtype, 0) == -1)   
  62.  
  63.         {   
  64.  
  65.             fprintf(stderr, "msgrcv failed with errno: %d\n", errno);   
  66.  
  67.             exit(EXIT_FAILURE);   
  68.  
  69.         }   
  70.  
  71.         printf("You wrote: %s\n",data.text);   
  72.  
  73.         //遇到end結(jié)束   
  74.  
  75.         if(strncmp(data.text, "end", 3) == 0)   
  76.  
  77.             running = 0;   
  78.  
  79.     }   
  80.  
  81.     //刪除消息隊(duì)列   
  82.  
  83.     if(msgctl(msgid, IPC_RMID, 0) == -1)   
  84.  
  85.     {   
  86.  
  87.         fprintf(stderr, "msgctl(IPC_RMID) failed\n");   
  88.  
  89.         exit(EXIT_FAILURE);   
  90.  
  91.     }   
  92.  
  93.     exit(EXIT_SUCCESS);   
  94.  
  95. }    

發(fā)送信息的程序的源文件msgsend.c的源代碼為:

  1. #include <unistd.h>   
  2.  
  3. #include <stdlib.h>   
  4.  
  5. #include <stdio.h>   
  6.  
  7. #include <string.h>   
  8.  
  9. #include <sys/msg.h>   
  10.  
  11. #include <errno.h>   
  12.  
  13.    
  14.  
  15. #define MAX_TEXT 512   
  16.  
  17. struct msg_st   
  18.  
  19. {   
  20.  
  21.     long int msg_type;   
  22.  
  23.     char text[MAX_TEXT];   
  24.  
  25. };   
  26.  
  27.    
  28.  
  29. int main()   
  30.  
  31. {   
  32.  
  33.     int running = 1;   
  34.  
  35.     struct msg_st data;   
  36.  
  37.     char buffer[BUFSIZ];   
  38.  
  39.     int msgid = -1;   
  40.  
  41.    
  42.  
  43.     //建立消息隊(duì)列   
  44.  
  45.     msgid = msgget((key_t)1234, 0666 | IPC_CREAT);   
  46.  
  47.     if(msgid == -1)   
  48.  
  49.     {   
  50.  
  51.         fprintf(stderr, "msgget failed with error: %d\n", errno);   
  52.  
  53.         exit(EXIT_FAILURE);   
  54.  
  55.     }   
  56.  
  57.    
  58.  
  59.     //向消息隊(duì)列中寫消息,直到寫入end   
  60.  
  61.     while(running)   
  62.  
  63.     {   
  64.  
  65.         //輸入數(shù)據(jù)   
  66.  
  67.         printf("Enter some text: ");   
  68.  
  69.         fgets(buffer, BUFSIZ, stdin);   
  70.  
  71.         data.msg_type = 1;    //注意2   
  72.  
  73.         strcpy(data.text, buffer);   
  74.  
  75.         //向隊(duì)列發(fā)送數(shù)據(jù)   
  76.  
  77.         if(msgsnd(msgid, (void*)&data, MAX_TEXT, 0) == -1)   
  78.  
  79.         {   
  80.  
  81.             fprintf(stderr, "msgsnd failed\n");   
  82.  
  83.             exit(EXIT_FAILURE);   
  84.  
  85.         }   
  86.  
  87.         //輸入end結(jié)束輸入   
  88.  
  89.         if(strncmp(buffer, "end", 3) == 0)   
  90.  
  91.             running = 0;   
  92.  
  93.         sleep(1);   
  94.  
  95.     }   
  96.  
  97.     exit(EXIT_SUCCESS);   
  98.  
  99. }    

運(yùn)行結(jié)果如下: 

 

 

 

四、例子分析——消息類型

這里主要說明一下消息類型是怎么一回事,注意msgreceive.c文件main函數(shù)中定義的變量msgtype(注釋為注意1),它作為msgrcv函數(shù)的接收信息類型參數(shù)的值,其值為0,表示獲取隊(duì)列中***個(gè)可用的消息。再來看看msgsend.c文件中while循環(huán)中的語句data.msg_type = 1(注釋為注意2),它用來設(shè)置發(fā)送的信息的信息類型,即其發(fā)送的信息的類型為1。所以程序msgreceive能夠接收到程序msgsend發(fā)送的信息。

如果把注意1,即msgreceive.c文件main函數(shù)中的語句由long int msgtype = 0;改變?yōu)閘ong int msgtype = 2;會(huì)發(fā)生什么情況,msgreceive將不能接收到程序msgsend發(fā)送的信息。因?yàn)樵谡{(diào)用msgrcv函數(shù)時(shí),如果msgtype(第四個(gè)參數(shù))大于零,則將只獲取具有相同消息類型的***個(gè)消息,修改后獲取的消息類型為2,而msgsend發(fā)送的消息類型為1,所以不能被msgreceive程序接收。重新編譯msgreceive.c文件并再次執(zhí)行,其結(jié)果如下: 

 

 

 

我們可以看到,msgreceive并沒有接收到信息和輸出,而且當(dāng)msgsend輸入end結(jié)束后,msgreceive也沒有結(jié)束,通過jobs命令我們可以看到它還在后臺(tái)運(yùn)行著。

五、消息隊(duì)列與命名管道的比較

消息隊(duì)列跟命名管道有不少的相同之處,通過與命名管道一樣,消息隊(duì)列進(jìn)行通信的進(jìn)程可以是不相關(guān)的進(jìn)程,同時(shí)它們都是通過發(fā)送和接收的方式來傳遞數(shù)據(jù)的。在命名管道中,發(fā)送數(shù)據(jù)用write,接收數(shù)據(jù)用read,則在消息隊(duì)列中,發(fā)送數(shù)據(jù)用msgsnd,接收數(shù)據(jù)用msgrcv。而且它們對(duì)每個(gè)數(shù)據(jù)都有一個(gè)***長(zhǎng)度的限制。

與命名管道相比,消息隊(duì)列的優(yōu)勢(shì)在于,1、消息隊(duì)列也可以獨(dú)立于發(fā)送和接收進(jìn)程而存在,從而消除了在同步命名管道的打開和關(guān)閉時(shí)可能產(chǎn)生的困難。2、同時(shí)通過發(fā)送消息還可以避免命名管道的同步和阻塞問題,不需要由進(jìn)程自己來提供同步方法。3、接收程序可以通過消息類型有選擇地接收數(shù)據(jù),而不是像命名管道中那樣,只能默認(rèn)地接收。 

責(zé)任編輯:龐桂玉 來源: 嵌入式Linux中文站
相關(guān)推薦

2019-05-13 10:00:41

Linux進(jìn)程間通信命令

2018-01-12 14:35:00

Linux進(jìn)程共享內(nèi)存

2010-01-05 10:00:48

Linux進(jìn)程間通信

2013-03-28 13:14:45

AIDL進(jìn)程間通信Android使用AI

2017-08-06 00:05:18

進(jìn)程通信開發(fā)

2018-05-30 13:58:02

Linux進(jìn)程通信

2019-05-08 11:10:05

Linux進(jìn)程語言

2021-01-22 10:58:16

網(wǎng)絡(luò)安全進(jìn)程間碼如

2021-03-11 06:01:41

Linux消息隊(duì)列

2020-11-18 09:06:04

Python

2020-11-04 07:17:42

Nodejs通信進(jìn)程

2011-06-22 17:09:50

QT 進(jìn)程 通信

2024-01-03 10:17:51

Linux通信

2019-06-04 09:00:00

Linux進(jìn)程進(jìn)程間通信

2019-11-08 14:47:49

TCPIP網(wǎng)絡(luò)

2016-11-28 14:11:24

ANDROID BIN通信架構(gòu)

2024-05-16 08:10:17

RabbitMQ軟件通信機(jī)制

2025-04-27 03:22:00

2011-06-24 14:01:34

Qt QCOP 協(xié)議

2021-04-07 15:11:26

鴻蒙HarmonyOS應(yīng)用
點(diǎn)贊
收藏

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

亚洲国产高清aⅴ视频| 国产精品中文字幕制服诱惑| 国产日本一区二区| 91精品久久久久久久| 国产女人18水真多毛片18精品| 精品国产18久久久久久二百| 亚洲a一区二区| 欧美一区二区三区成人久久片| 中文字字幕在线中文乱码| 欧美1区免费| 精品在线欧美视频| 亚洲另类第一页| 丰满诱人av在线播放| 91蜜桃在线免费视频| 成人国产在线视频| 五月激情六月丁香| 综合日韩在线| 国产一区二区三区视频免费| 曰本三级日本三级日本三级| а√天堂8资源中文在线| 国产精品无人区| 99视频网站| 中文永久免费观看| 一本久道久久综合狠狠爱| 中文字幕亚洲一区二区三区| 国产黑丝一区二区| 精品一区二区三区四区五区| 一本到不卡免费一区二区| 久久福利一区二区| av天在线观看| 久久久另类综合| 91在线看网站| 97超碰人人模人人人爽人人爱| 国产精品久久久亚洲一区| 久久国产天堂福利天堂| 精品人妻一区二区三区日产乱码卜| 亚洲国产一区二区久久| 在线观看日韩精品| 97国产精东麻豆人妻电影| av免费在线免费| 国产精品午夜久久| 特级西西444www大精品视频| 青青九九免费视频在线| 国产aⅴ综合色| 亚洲va欧美va国产综合久久| 99re热视频| 久久午夜精品| 2025国产精品视频| 西西44rtwww国产精品| 在线观看视频免费一区二区三区| 欧美成人午夜激情视频| 天堂在线中文视频| 欧美理论电影大全| 国产一区二区三区在线播放免费观看| 99久久国产精| 日韩精品亚洲aⅴ在线影院| 精品久久五月天| 亚洲熟女乱综合一区二区| 精品一区二区三区中文字幕| 欧美老年两性高潮| 天天干天天玩天天操| 国产一区高清| 欧美精品一二三四| 超碰超碰在线观看| 青青在线精品| 91超碰这里只有精品国产| 热久久久久久久久| 久久gogo国模啪啪裸体| 日韩女优视频免费观看| 日批视频在线看| 国产午夜亚洲精品一级在线| 欧美一级高清片在线观看| 黑人巨大猛交丰满少妇| 亚洲欧美日韩动漫| 亚洲自拍都市欧美小说| 亚洲激情免费观看| 亚洲乱码国产乱码精品精大量| 欧美精品国产白浆久久久久| 精品久久一区二区| 久久精品老司机| 欧美手机视频| 久久的精品视频| 国产一级做a爰片在线看免费| 日韩一级大片| 7777免费精品视频| 中日韩在线观看视频| 国产精品一区二区久久不卡 | 日韩特级毛片| 亚洲成人自拍一区| 麻豆传传媒久久久爱| 色999久久久精品人人澡69| 这里只有精品电影| 亚洲一区二区乱码| 欧美韩日一区| 高清在线视频日韩欧美| 成人小视频在线播放| 国产一区二区免费视频| 久久久一本精品99久久精品66| 国产高清在线观看| 一区二区三区成人| 国产又大又硬又粗| 精品一区二区三区亚洲| 亚洲色图欧美制服丝袜另类第一页| 看黄色录像一级片| 国产精品三上| 亚洲综合在线做性| 国产福利小视频在线| 亚洲综合清纯丝袜自拍| 免费观看成人网| 亚洲国产高清在线观看| 国产一区二区三区网站| 日本少妇激情舌吻| 韩国成人在线视频| 日本午夜精品电影| 黄在线观看免费网站ktv| 欧美一三区三区四区免费在线看 | 日韩精品一区二区三区中文| 亚洲欧美色图片| 麻豆疯狂做受xxxx高潮视频| 蜜桃一区二区三区在线观看| 精品国产免费久久久久久尖叫 | 国产视频视频一区| 日韩欧美精品网站| 久久视频免费在线| free欧美| 亚洲激情自拍图| 三上悠亚作品在线观看| 久久精品二区三区| 国产精品二区在线| 国内外激情在线| 欧美三区在线视频| 实拍女处破www免费看| 亚洲黄页一区| av一区和二区| 18视频在线观看网站| 欧美日韩免费在线视频| av电影网站在线观看| 在线综合亚洲| 国产一区二区三区免费不卡| 在线三级电影| 91精品国产综合久久久久久久久久 | www.超碰在线| 精品国产免费久久| 强行糟蹋人妻hd中文| 国产在线国偷精品免费看| 亚洲mv在线看| jizzyou欧美16| 夜夜嗨av一区二区三区四区| 免费看日批视频| 久久蜜臀中文字幕| 国产亚洲精品网站| 美女精品一区最新中文字幕一区二区三区| 欧美激情影音先锋| 少妇高潮久久久| 亚洲国产成人av网| 喷水视频在线观看| 亚洲永久免费| 日本午夜一区二区三区| 素人啪啪色综合| 中文字幕日本精品| 在线免费观看av片| 国产精品成人一区二区艾草| 久久久精品高清| 亚洲国产一成人久久精品| 亚洲xxx大片| 俺来也官网欧美久久精品| 精品国产亚洲在线| 91美女免费看| 国产亚洲欧美日韩在线一区| 一道本视频在线观看| 午夜精品毛片| 99精品国产高清一区二区| av人人综合网| 亚洲精品中文字幕有码专区| 国产一卡二卡三卡| 亚洲天堂免费看| 午夜影院福利社| 亚洲尤物影院| 亚洲一卡二卡| 永久免费精品视频| 欧美在线播放视频| 在线播放毛片| 精品999在线播放| www亚洲视频| 中文字幕日本乱码精品影院| 香蕉视频污视频| 久久三级视频| av动漫在线免费观看| 亚洲瘦老头同性70tv| 国产美女精品视频免费观看| 国模雨婷捆绑高清在线| 亚洲欧美日韩国产成人| 国产精品视频无码| 好吊成人免视频| 国产乱子轮xxx农村| 成人精品电影在线观看| 亚洲最大综合网| 黄色欧美日韩| 亚洲v日韩v欧美v综合| 中文字幕一区二区三区中文字幕| 欧美亚洲国产视频小说| 日韩精品毛片| 精品偷拍各种wc美女嘘嘘| 国产精品视频无码| 日韩欧美精品中文字幕| 手机在线免费看毛片| 国产午夜三级一区二区三| 国产精品91av| 精品一区精品二区高清| 亚洲自偷自拍熟女另类| 亚洲色图国产| 日韩av一区二区三区美女毛片| baoyu135国产精品免费| 国产精品亚发布| 蜜桃麻豆影像在线观看| 久久久极品av| av资源网在线观看| 日韩激情第一页| 成人av无码一区二区三区| 精品1区2区3区| 91精品国产高清一区二区三密臀| 一区二区三区四区蜜桃 | 一区二区免费看| 中国美女黄色一级片| ww久久中文字幕| 国产一卡二卡三卡四卡| 韩国av一区二区三区在线观看| 中文字幕无码不卡免费视频| 99成人在线| 嫩草影院中文字幕| 中文字幕午夜精品一区二区三区 | 91精彩视频在线观看| 亚洲国产97在线精品一区| 国产成人a人亚洲精品无码| 欧美日韩午夜影院| 亚洲 小说区 图片区| 日韩欧美国产免费播放| 国产成人免费观看视频| 亚洲.国产.中文慕字在线| 妺妺窝人体色www婷婷| |精品福利一区二区三区| 神马久久久久久久久久久| 久久九九全国免费| 国产色视频一区二区三区qq号| av资源网一区| 波多野结衣视频播放| 成人99免费视频| www.17c.com喷水少妇| 成人h动漫精品一区二| aaa黄色大片| 北岛玲一区二区三区四区| 丝袜熟女一区二区三区| 成人99免费视频| 亚洲狠狠婷婷综合久久久久图片| 99久久婷婷国产综合精品| 人妻丰满熟妇aⅴ无码| 91理论电影在线观看| 国产精品高清无码在线观看| 久久亚洲精精品中文字幕早川悠里 | 一区二区福利视频| 成年人在线观看| 日韩视频在线一区| a级网站在线播放| 欧美人在线观看| av资源中文在线天堂| 欧美在线免费视频| 免费观看成人性生生活片 | 91免费视频网址| 瑟瑟视频在线观看| 国产精品视频免费看| 久久福利免费视频| 亚洲一区在线观看视频| 日本熟妇毛耸耸xxxxxx| 日韩欧美国产黄色| 亚洲天堂手机版| 欧美成人一级视频| 亚洲 国产 欧美 日韩| 国产亚洲一区精品| 成人福利在线观看视频| 97精品伊人久久久大香线蕉| 激情亚洲影院在线观看| 成人av番号网| 国内毛片久久| 亚洲国产一区二区精品视频| 女人色偷偷aa久久天堂| 欧美一区二区三区爽大粗免费 | 三级网站免费看| av不卡在线播放| 国产一区二区三区视频播放| 亚洲已满18点击进入久久| 国产一级一级国产| 欧美一区二区福利在线| 五十路在线视频| 日韩在线播放一区| 日本在线影院| 成人做爽爽免费视频| 婷婷综合一区| 欧美性受黑人性爽| 久久午夜激情| 制服丝袜av在线| 国产精品不卡在线| 国产成人综合欧美精品久久| 欧美欧美欧美欧美| 青青青草原在线| 久久久久久国产精品久久| 精品视频在线一区二区在线| 成人自拍视频网站| 久久性感美女视频| 欧美视频第一区| 国产成人在线色| 一本色道久久88| 欧美日韩一区二区免费视频| av在线资源观看| 日韩在线中文字幕| 韩国久久久久久| 高清日韩一区| 国产精品久久天天影视| 妺妺窝人体色www在线小说| 国产一区二区三区免费看| 性猛交娇小69hd| 岛国精品视频在线播放| 亚洲精品成av人片天堂无码| 北条麻妃99精品青青久久| 欧美电影网站| 九九九九精品| 影音先锋一区| 久久国产免费视频| 成人欧美一区二区三区| 瑟瑟视频在线免费观看| 亚洲毛茸茸少妇高潮呻吟| 国产理论电影在线| 亚洲精品日韩av| 国产精品二区不卡| 亚洲国产精品三区| 国产欧美日韩综合精品一区二区| 五月天综合激情网| 亚洲激情自拍图| 麻豆成全视频免费观看在线看| 99re在线视频观看| 欧美大片专区| 亚洲av无码久久精品色欲| 亚洲欧美欧美一区二区三区| 91theporn国产在线观看| 色噜噜狠狠狠综合曰曰曰 | 99精品免费网| 日韩Av无码精品| 午夜亚洲福利老司机| 老司机午夜福利视频| 欧美激情a在线| 草草视频在线一区二区| 欧美精品久久久久久久久久久| 成人在线视频一区二区| 黄色激情视频在线观看| 亚洲国产精品悠悠久久琪琪 | 亚洲国产成人91porn| 欧美一级淫片aaaaaa| 97人人模人人爽人人喊中文字 | 亚洲精品国产精品久久| 毛片不卡一区二区| 午夜精品一区二区三级视频| 日韩一级二级三级精品视频| 狂野欧美性猛交xxxxx视频| 国产精品免费一区二区三区观看| 日韩一级免费| 蜜臀久久99精品久久久久久| 欧美三片在线视频观看| 毛片av在线| 福利视频一区二区三区| 一区二区日本视频| 老头老太做爰xxx视频| 欧美高清性hdvideosex| 毛片在线网址| 欧美激情视频一区二区三区| 免费在线观看不卡| 国产探花在线播放| 日韩成人中文字幕在线观看| 欧洲av不卡| 影音先锋成人资源网站| 成人不卡免费av| 在线观看亚洲黄色| 美女撒尿一区二区三区| 欧美顶级毛片在线播放| 亚洲少妇久久久| 亚洲一区二区三区在线看| 天堂a中文在线| 国产精品大片wwwwww| 91精品久久久久久久蜜月| 奇米777第四色| 欧美私模裸体表演在线观看| 91精品国产91久久久久久青草| 久久国产精品免费一区| 久热成人在线视频| 日韩伦理在线视频| 在线日韩中文字幕| 99亚洲乱人伦aⅴ精品| 亚洲精品高清无码视频| 亚洲国产日韩综合久久精品| gogogo高清在线观看免费完整版| 91在线观看网站| 蜜桃av噜噜一区二区三区小说|