日韩av黄I国产麻豆传媒I国产91av视频在线观看I日韩一区二区三区在线看I美女国产在线I麻豆视频国产在线观看I成人黄色短片

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

利用libwebsockets写ws、wss服务端和客户端

發(fā)布時間:2023/12/20 编程问答 41 豆豆
生活随笔 收集整理的這篇文章主要介紹了 利用libwebsockets写ws、wss服务端和客户端 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

服務(wù)端:

server.c

#include "libwebsockets.h" #include <signal.h> #include <string.h>static volatile int exit_sig = 0; #define MAX_PAYLOAD_SIZE 10 * 1024void sighdl( int sig ) {lwsl_notice( "%d traped", sig );exit_sig = 1; }/*** 會話上下文對象,結(jié)構(gòu)根據(jù)需要自定義*/ struct session_data {int msg_count;unsigned char buf[LWS_PRE + MAX_PAYLOAD_SIZE];int len;bool bin;bool fin; };static int protocol_my_callback( struct lws *wsi, enum lws_callback_reasons reason, void *user, void *in, size_t len ) {struct session_data *data = (struct session_data *) user;switch ( reason ) {case LWS_CALLBACK_ESTABLISHED: // 當服務(wù)器和客戶端完成握手后printf("Client connect!\n");break;case LWS_CALLBACK_RECEIVE: // 當接收到客戶端發(fā)來的幀以后// 判斷是否最后一幀data->fin = lws_is_final_fragment( wsi );// 判斷是否二進制消息data->bin = lws_frame_is_binary( wsi );// 對服務(wù)器的接收端進行流量控制,如果來不及處理,可以控制之// 下面的調(diào)用禁止在此連接上接收數(shù)據(jù)lws_rx_flow_control( wsi, 0 );// 業(yè)務(wù)處理部分,為了實現(xiàn)Echo服務(wù)器,把客戶端數(shù)據(jù)保存起來memcpy( &data->buf[ LWS_PRE ], in, len );data->len = len;printf("recvied message:%s\n",in);// 需要給客戶端應(yīng)答時,觸發(fā)一次寫回調(diào)lws_callback_on_writable( wsi );break;case LWS_CALLBACK_SERVER_WRITEABLE: // 當此連接可寫時lws_write( wsi, &data->buf[ LWS_PRE ], data->len, LWS_WRITE_TEXT );// 下面的調(diào)用允許在此連接上接收數(shù)據(jù)lws_rx_flow_control( wsi, 1 );break;}// 回調(diào)函數(shù)最終要返回0,否則無法創(chuàng)建服務(wù)器return 0; }/*** 支持的WebSocket子協(xié)議數(shù)組* 子協(xié)議即JavaScript客戶端WebSocket(url, protocols)第2參數(shù)數(shù)組的元素* 你需要為每種協(xié)議提供回調(diào)函數(shù)*/ struct lws_protocols protocols[] = {{//協(xié)議名稱,協(xié)議回調(diào),接收緩沖區(qū)大小"ws", protocol_my_callback, sizeof( struct session_data ), MAX_PAYLOAD_SIZE,},{NULL, NULL, 0 // 最后一個元素固定為此格式} };int main(int argc,char **argv) {// 信號處理函數(shù)signal( SIGTERM, sighdl );struct lws_context_creation_info ctx_info = { 0 };ctx_info.port = 8000;ctx_info.iface = NULL; // 在所有網(wǎng)絡(luò)接口上監(jiān)聽ctx_info.protocols = protocols;ctx_info.gid = -1;ctx_info.uid = -1;ctx_info.options = LWS_SERVER_OPTION_VALIDATE_UTF8;ctx_info.ssl_ca_filepath = "../ca/ca-cert.pem";ctx_info.ssl_cert_filepath = "./server-cert.pem";ctx_info.ssl_private_key_filepath = "./server-key.pem";ctx_info.options |= LWS_SERVER_OPTION_DO_SSL_GLOBAL_INIT;//ctx_info.options |= LWS_SERVER_OPTION_REQUIRE_VALID_OPENSSL_CLIENT_CERT;struct lws_context *context = lws_create_context(&ctx_info);while ( !exit_sig ) {lws_service(context, 1000);}lws_context_destroy(context);return 0; }

編譯腳本,compile.sh

######################################################################### # File Name: compile.sh # Author: loon # mail: 2453419889@qq.com # Created Time: 2018年09月07日 星期五 10時08分52秒 ######################################################################### #!/bin/bashlibdir=libwebsocketsg++ -g -o server server.c -I$libdir/include -L$libdir/lib -lwebsockets

客戶端

client.c

#include "libwebsockets.h" #include <signal.h>static volatile int exit_sig = 0; #define MAX_PAYLOAD_SIZE 10 * 1024void sighdl( int sig ) {lwsl_notice( "%d traped", sig );exit_sig = 1; }/*** 會話上下文對象,結(jié)構(gòu)根據(jù)需要自定義*/ struct session_data {int msg_count;unsigned char buf[LWS_PRE + MAX_PAYLOAD_SIZE];int len; };/*** 某個協(xié)議下的連接發(fā)生事件時,執(zhí)行的回調(diào)函數(shù)** wsi:指向WebSocket實例的指針* reason:導致回調(diào)的事件* user 庫為每個WebSocket會話分配的內(nèi)存空間* in 某些事件使用此參數(shù),作為傳入數(shù)據(jù)的指針* len 某些事件使用此參數(shù),說明傳入數(shù)據(jù)的長度*/ int callback( struct lws *wsi, enum lws_callback_reasons reason, void *user, void *in, size_t len ) {struct session_data *data = (struct session_data *) user;switch ( reason ) {case LWS_CALLBACK_CLIENT_ESTABLISHED: // 連接到服務(wù)器后的回調(diào)lwsl_notice( "Connected to server ok!\n" );break;case LWS_CALLBACK_CLIENT_RECEIVE: // 接收到服務(wù)器數(shù)據(jù)后的回調(diào),數(shù)據(jù)為in,其長度為lenlwsl_notice( "Rx: %s\n", (char *) in );break;case LWS_CALLBACK_CLIENT_WRITEABLE: // 當此客戶端可以發(fā)送數(shù)據(jù)時的回調(diào)if ( data->msg_count < 3 ) {// 前面LWS_PRE個字節(jié)必須留給LWSmemset( data->buf, 0, sizeof( data->buf ));char *msg = (char *) &data->buf[ LWS_PRE ];data->len = sprintf( msg, "你好 %d", ++data->msg_count );lwsl_notice( "Tx: %s\n", msg );// 通過WebSocket發(fā)送文本消息lws_write( wsi, &data->buf[ LWS_PRE ], data->len, LWS_WRITE_TEXT );}break;}return 0; }/*** 支持的WebSocket子協(xié)議數(shù)組* 子協(xié)議即JavaScript客戶端WebSocket(url, protocols)第2參數(shù)數(shù)組的元素* 你需要為每種協(xié)議提供回調(diào)函數(shù)*/ struct lws_protocols protocols[] = {{//協(xié)議名稱,協(xié)議回調(diào),接收緩沖區(qū)大小"ws", callback, sizeof( struct session_data ), MAX_PAYLOAD_SIZE,},{NULL, NULL, 0 // 最后一個元素固定為此格式} };int main() {// 信號處理函數(shù)signal( SIGTERM, sighdl );// 用于創(chuàng)建vhost或者context的參數(shù)struct lws_context_creation_info ctx_info = { 0 };ctx_info.port = CONTEXT_PORT_NO_LISTEN;ctx_info.iface = NULL;ctx_info.protocols = protocols;ctx_info.gid = -1;ctx_info.uid = -1;//ssl支持(指定CA證書、客戶端證書及私鑰路徑,打開ssl支持)ctx_info.ssl_ca_filepath = "../ca/ca-cert.pem";ctx_info.ssl_cert_filepath = "./client-cert.pem";ctx_info.ssl_private_key_filepath = "./client-key.pem";ctx_info.options |= LWS_SERVER_OPTION_DO_SSL_GLOBAL_INIT;// 創(chuàng)建一個WebSocket處理器struct lws_context *context = lws_create_context( &ctx_info );char address[] = "127.0.0.1";int port = 8000;char addr_port[256] = { 0 };sprintf(addr_port, "%s:%u", address, port & 65535 );// 客戶端連接參數(shù)struct lws_client_connect_info conn_info = { 0 };conn_info.context = context;conn_info.address = address;conn_info.port = port;conn_info.ssl_connection = 1;conn_info.path = "./";conn_info.host = addr_port;conn_info.origin = addr_port;conn_info.protocol = protocols[ 0 ].name;// 下面的調(diào)用觸發(fā)LWS_CALLBACK_PROTOCOL_INIT事件// 創(chuàng)建一個客戶端連接struct lws *wsi = lws_client_connect_via_info( &conn_info );while ( !exit_sig ) {// 執(zhí)行一次事件循環(huán)(Poll),最長等待1000毫秒lws_service( context, 1000 );/*** 下面的調(diào)用的意義是:當連接可以接受新數(shù)據(jù)時,觸發(fā)一次WRITEABLE事件回調(diào)* 當連接正在后臺發(fā)送數(shù)據(jù)時,它不能接受新的數(shù)據(jù)寫入請求,所有WRITEABLE事件回調(diào)不會執(zhí)行*/lws_callback_on_writable( wsi );}// 銷毀上下文對象lws_context_destroy( context );return 0; }

編譯腳本:

######################################################################### # File Name: compile.sh # Author: loon # mail: 2453419889@qq.com # Created Time: 2018年09月07日 星期五 10時22分58秒 ######################################################################### #!/bin/bashlibdir=libwebsocketsg++ -g -o client client.c -I$libdir/include -L$libdir/build/lib -lwebsockets

官網(wǎng)例子

其實下載了官網(wǎng)源碼后minimal-examples下面有很多的例子,里面已經(jīng)寫好了cmake的文件,看一下對應(yīng)的README后直接可以在對應(yīng)位置編譯,我這里復制minimal-ws-client和一個minimal-ws-server的例子,我基本只改了服務(wù)地址和端口,然后增加了打印(還有tx和rx客戶端分別代表發(fā)送和接收,都可以看一下):
客戶端:

/** lws-minimal-ws-client-tx** Written in 2010-2019 by Andy Green <andy@warmcat.com>** This file is made available under the Creative Commons CC0 1.0* Universal Public Domain Dedication.** This demonstrates a ws "publisher" to go with the minimal-ws-broker* example.** Two threads are spawned that produce messages to be sent to the broker,* via a local ringbuffer. Locking is provided to make ringbuffer access* threadsafe.** When a nailed-up client connection to the broker is established, the* ringbuffer is sent to the broker, which distributes the events to all* connected clients.*/#include <libwebsockets.h> #include <string.h> #include <signal.h> #include <pthread.h>static int interrupted;/* one of these created for each message */struct msg {void *payload; /* is malloc'd */size_t len; };struct per_vhost_data__minimal {struct lws_context *context;struct lws_vhost *vhost;const struct lws_protocols *protocol;pthread_t pthread_spam[2];pthread_mutex_t lock_ring; /* serialize access to the ring buffer */struct lws_ring *ring; /* ringbuffer holding unsent messages */uint32_t tail;struct lws_client_connect_info i;struct lws *client_wsi;int counter;char finished;char established; };#if defined(WIN32) static void usleep(unsigned long l) { Sleep(l / 1000); } #endifstatic void __minimal_destroy_message(void *_msg) {struct msg *msg = _msg;free(msg->payload);msg->payload = NULL;msg->len = 0; }static void * thread_spam(void *d) {struct per_vhost_data__minimal *vhd =(struct per_vhost_data__minimal *)d;struct msg amsg;int len = 128, index = 1, n;do {/* don't generate output if client not connected */if (!vhd->established)goto wait;pthread_mutex_lock(&vhd->lock_ring); /* --------- ring lock { *//* only create if space in ringbuffer */n = (int)lws_ring_get_count_free_elements(vhd->ring);if (!n) {lwsl_user("dropping!\n");goto wait_unlock;}amsg.payload = malloc(LWS_PRE + len);if (!amsg.payload) {lwsl_user("OOM: dropping\n");goto wait_unlock;}n = lws_snprintf((char *)amsg.payload + LWS_PRE, len,"tid: %p, msg: %d",(void *)pthread_self(), index++);amsg.len = n;n = lws_ring_insert(vhd->ring, &amsg, 1);if (n != 1) {__minimal_destroy_message(&amsg);lwsl_user("dropping!\n");} else/** This will cause a LWS_CALLBACK_EVENT_WAIT_CANCELLED* in the lws service thread context.*/lws_cancel_service(vhd->context);wait_unlock:pthread_mutex_unlock(&vhd->lock_ring); /* } ring lock ------- */wait:usleep(100000);} while (!vhd->finished);lwsl_notice("thread_spam %p exiting\n", (void *)pthread_self());pthread_exit(NULL);return NULL; }static int connect_client(struct per_vhost_data__minimal *vhd) {vhd->i.context = vhd->context;vhd->i.port = 7681;vhd->i.address = "localhost";vhd->i.path = "/publisher";vhd->i.host = vhd->i.address;vhd->i.origin = vhd->i.address;vhd->i.ssl_connection = 0;vhd->i.protocol = "lws-minimal-broker";vhd->i.pwsi = &vhd->client_wsi;return !lws_client_connect_via_info(&vhd->i); }static int callback_minimal_broker(struct lws *wsi, enum lws_callback_reasons reason,void *user, void *in, size_t len) {struct per_vhost_data__minimal *vhd =(struct per_vhost_data__minimal *)lws_protocol_vh_priv_get(lws_get_vhost(wsi),lws_get_protocol(wsi));const struct msg *pmsg;void *retval;int n, m, r = 0;switch (reason) {/* --- protocol lifecycle callbacks --- */case LWS_CALLBACK_PROTOCOL_INIT:vhd = lws_protocol_vh_priv_zalloc(lws_get_vhost(wsi),lws_get_protocol(wsi),sizeof(struct per_vhost_data__minimal));vhd->context = lws_get_context(wsi);vhd->protocol = lws_get_protocol(wsi);vhd->vhost = lws_get_vhost(wsi);vhd->ring = lws_ring_create(sizeof(struct msg), 8,__minimal_destroy_message);if (!vhd->ring)return 1;pthread_mutex_init(&vhd->lock_ring, NULL);/* start the content-creating threads */for (n = 0; n < (int)LWS_ARRAY_SIZE(vhd->pthread_spam); n++)if (pthread_create(&vhd->pthread_spam[n], NULL,thread_spam, vhd)) {lwsl_err("thread creation failed\n");r = 1;goto init_fail;}if (connect_client(vhd))lws_timed_callback_vh_protocol(vhd->vhost,vhd->protocol, LWS_CALLBACK_USER, 1);break;case LWS_CALLBACK_PROTOCOL_DESTROY: init_fail:vhd->finished = 1;for (n = 0; n < (int)LWS_ARRAY_SIZE(vhd->pthread_spam); n++)if (vhd->pthread_spam[n])pthread_join(vhd->pthread_spam[n], &retval);if (vhd->ring)lws_ring_destroy(vhd->ring);pthread_mutex_destroy(&vhd->lock_ring);return r;case LWS_CALLBACK_CLIENT_CONNECTION_ERROR:lwsl_err("CLIENT_CONNECTION_ERROR: %s\n",in ? (char *)in : "(null)");vhd->client_wsi = NULL;lws_timed_callback_vh_protocol(vhd->vhost,vhd->protocol, LWS_CALLBACK_USER, 1);break;/* --- client callbacks --- */case LWS_CALLBACK_CLIENT_ESTABLISHED:lwsl_user("%s: established\n", __func__);vhd->established = 1;break;case LWS_CALLBACK_CLIENT_WRITEABLE:pthread_mutex_lock(&vhd->lock_ring); /* --------- ring lock { */pmsg = lws_ring_get_element(vhd->ring, &vhd->tail);if (!pmsg)goto skip;/* notice we allowed for LWS_PRE in the payload already */m = lws_write(wsi, ((unsigned char *)pmsg->payload) + LWS_PRE,pmsg->len, LWS_WRITE_TEXT);if (m < (int)pmsg->len) {pthread_mutex_unlock(&vhd->lock_ring); /* } ring lock */lwsl_err("ERROR %d writing to ws socket\n", m);return -1;}lws_ring_consume_single_tail(vhd->ring, &vhd->tail, 1);/* more to do for us? */if (lws_ring_get_element(vhd->ring, &vhd->tail))/* come back as soon as we can write more */lws_callback_on_writable(wsi);skip:pthread_mutex_unlock(&vhd->lock_ring); /* } ring lock ------- */break;case LWS_CALLBACK_CLIENT_CLOSED:vhd->client_wsi = NULL;vhd->established = 0;lws_timed_callback_vh_protocol(vhd->vhost, vhd->protocol,LWS_CALLBACK_USER, 1);break;case LWS_CALLBACK_EVENT_WAIT_CANCELLED:/** When the "spam" threads add a message to the ringbuffer,* they create this event in the lws service thread context* using lws_cancel_service().** We respond by scheduling a writable callback for the* connected client, if any.*/if (vhd && vhd->client_wsi && vhd->established)lws_callback_on_writable(vhd->client_wsi);break;/* rate-limited client connect retries */case LWS_CALLBACK_USER:printf("用戶回調(diào)...\n");lwsl_notice("%s: LWS_CALLBACK_USER\n", __func__);if (connect_client(vhd))lws_timed_callback_vh_protocol(vhd->vhost,vhd->protocol,LWS_CALLBACK_USER, 1);break;default:break;}return lws_callback_http_dummy(wsi, reason, user, in, len); }static const struct lws_protocols protocols[] = {{"lws-minimal-broker",callback_minimal_broker,0,0,},{ NULL, NULL, 0, 0 } };static void sigint_handler(int sig) {interrupted = 1; }int main(int argc, const char **argv) {struct lws_context_creation_info info;struct lws_context *context;const char *p;int n = 0, logs = LLL_USER | LLL_ERR | LLL_WARN | LLL_NOTICE/* for LLL_ verbosity above NOTICE to be built into lws,* lws must have been configured and built with* -DCMAKE_BUILD_TYPE=DEBUG instead of =RELEASE *//* | LLL_INFO */ /* | LLL_PARSER */ /* | LLL_HEADER *//* | LLL_EXT */ /* | LLL_CLIENT */ /* | LLL_LATENCY *//* | LLL_DEBUG */;signal(SIGINT, sigint_handler);if ((p = lws_cmdline_option(argc, argv, "-d")))logs = atoi(p);lws_set_log_level(logs, NULL);lwsl_user("LWS minimal ws client tx\n");lwsl_user(" Run minimal-ws-broker and browse to that\n");memset(&info, 0, sizeof info); /* otherwise uninitialized garbage */info.port = CONTEXT_PORT_NO_LISTEN; /* we do not run any server */info.protocols = protocols;/** since we know this lws context is only ever going to be used with* one client wsis / fds / sockets at a time, let lws know it doesn't* have to use the default allocations for fd tables up to ulimit -n.* It will just allocate for 1 internal and 1 (+ 1 http2 nwsi) that we* will use.*/info.fd_limit_per_thread = 1 + 1 + 1;context = lws_create_context(&info);if (!context) {lwsl_err("lws init failed\n");return 1;}while (n >= 0 && !interrupted)n = lws_service(context, 0);lws_context_destroy(context);lwsl_user("Completed\n");return 0; }

服務(wù)端:

/** lws-minimal-ws-server** Written in 2010-2019 by Andy Green <andy@warmcat.com>** This file is made available under the Creative Commons CC0 1.0* Universal Public Domain Dedication.** This demonstrates the most minimal http server you can make with lws,* with an added websocket chat server.** To keep it simple, it serves stuff in the subdirectory "./mount-origin" of* the directory it was started in.* You can change that by changing mount.origin.*/#include <libwebsockets.h> #include <string.h> #include <signal.h>#define LWS_PLUGIN_STATIC #include "protocol_lws_minimal.c"static struct lws_protocols protocols[] = {{ "http", lws_callback_http_dummy, 0, 0 },LWS_PLUGIN_PROTOCOL_MINIMAL,{ NULL, NULL, 0, 0 } /* terminator */ };static const lws_retry_bo_t retry = {.secs_since_valid_ping = 3,.secs_since_valid_hangup = 10, };static int interrupted;static const struct lws_http_mount mount = {/* .mount_next */ NULL, /* linked-list "next" *//* .mountpoint */ "/", /* mountpoint URL *//* .origin */ "./mount-origin", /* serve from dir *//* .def */ "index.html", /* default filename *//* .protocol */ NULL,/* .cgienv */ NULL,/* .extra_mimetypes */ NULL,/* .interpret */ NULL,/* .cgi_timeout */ 0,/* .cache_max_age */ 0,/* .auth_mask */ 0,/* .cache_reusable */ 0,/* .cache_revalidate */ 0,/* .cache_intermediaries */ 0,/* .origin_protocol */ LWSMPRO_FILE, /* files in a dir *//* .mountpoint_len */ 1, /* char count *//* .basic_auth_login_file */ NULL, };void sigint_handler(int sig) {interrupted = 1; }int main(int argc, const char **argv) {struct lws_context_creation_info info;struct lws_context *context;const char *p;int n = 0, logs = LLL_USER | LLL_ERR | LLL_WARN | LLL_NOTICE/* for LLL_ verbosity above NOTICE to be built into lws,* lws must have been configured and built with* -DCMAKE_BUILD_TYPE=DEBUG instead of =RELEASE *//* | LLL_INFO */ /* | LLL_PARSER */ /* | LLL_HEADER *//* | LLL_EXT */ /* | LLL_CLIENT */ /* | LLL_LATENCY *//* | LLL_DEBUG */;signal(SIGINT, sigint_handler);if ((p = lws_cmdline_option(argc, argv, "-d")))logs = atoi(p);lws_set_log_level(logs, NULL);lwsl_user("LWS minimal ws server | visit http://localhost:7681 (-s = use TLS / https)\n");memset(&info, 0, sizeof info); /* otherwise uninitialized garbage */info.port = 7681;info.mounts = &mount;info.protocols = protocols;info.vhost_name = "localhost";info.ws_ping_pong_interval = 10;info.options =LWS_SERVER_OPTION_HTTP_HEADERS_SECURITY_BEST_PRACTICES_ENFORCE;if (lws_cmdline_option(argc, argv, "-s")) {lwsl_user("Server using TLS\n");info.options |= LWS_SERVER_OPTION_DO_SSL_GLOBAL_INIT;info.ssl_cert_filepath = "localhost-100y.cert";info.ssl_private_key_filepath = "localhost-100y.key";}if (lws_cmdline_option(argc, argv, "-h"))info.options |= LWS_SERVER_OPTION_VHOST_UPG_STRICT_HOST_CHECK;if (lws_cmdline_option(argc, argv, "-v"))info.retry_and_idle_policy = &retry;context = lws_create_context(&info);if (!context) {lwsl_err("lws init failed\n");return 1;}while (n >= 0 && !interrupted)n = lws_service(context, 0);lws_context_destroy(context);return 0; }

由于服務(wù)端和客戶端支持的回調(diào)協(xié)議名不一樣,所以服務(wù)器這里一直打印,不影響使用:


下面有很多人問lws_getaddrinfo46 failed的問題,我懷疑是dns解析的問題,建議先使用ip和端口的形式試下,域名的問題我再看看源碼,暫時沒分析出原因,客戶端似乎沒辦法自動根據(jù)域名解析出對應(yīng)的ip和端口,目前從源碼看是“ipv6 lws_getaddrinfo46 failed”。

還有客戶端一般可以用官網(wǎng)給的不加密客戶端,需要加密的話則需要證書,對于自簽名的證書options配置參數(shù)需要改一下,是支持自簽名證書的。

?

?

總結(jié)

以上是生活随笔為你收集整理的利用libwebsockets写ws、wss服务端和客户端的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。

岛国一区在线 | 欧美国产日韩在线视频 | 色播五月激情五月 | 国产在线观看一区 | 狠狠操天天射 | 久久久久久激情 | 久久久免费在线观看 | 免费在线观看av不卡 | 99热免费在线 | 亚洲精品国产区 | 久久久精品网站 | 久久撸在线视频 | av日韩av | 又黄又爽的视频在线观看网站 | 在线亚洲小视频 | 亚洲国产日韩精品 | 99综合电影在线视频 | 免费日韩 精品中文字幕视频在线 | 日韩视频a| 免费午夜av | 高清精品久久 | 99视频在线观看免费 | 婷婷色综 | 免费观看一级特黄欧美大片 | 成人黄色电影在线播放 | 久久观看免费视频 | 日韩爱爱网站 | 久久观看免费视频 | 一区 在线观看 | 99久久99视频 | 91成人精品在线 | 久久五月激情 | 久草在线视频免费资源观看 | 色老板在线 | 国产视频在线观看一区二区 | 精品国产一区二区三区久久 | 日韩有码第一页 | 欧美黑人性爽 | 国产在线观看你懂的 | 在线观看国产成人av片 | 99久久夜色精品国产亚洲96 | 国产夫妻性生活自拍 | 欧美日韩大片在线观看 | 亚洲欧美日韩不卡 | 成人影片在线免费观看 | 最新日韩在线观看 | 亚洲成人精品久久久 | 日韩精品视频免费专区在线播放 | 91丨九色丨国产在线 | av7777777| 久久综合激情 | 五月天久久婷 | 看黄色91 | 成 人 黄 色视频免费播放 | 视频1区2区| 夜夜操夜夜干 | 99一区二区三区 | 天天干 夜夜操 | 在线精品视频免费播放 | 色吊丝在线永久观看最新版本 | 午夜精品在线看 | 96久久久| 探花视频在线观看+在线播放 | 中文不卡视频在线 | 香蕉视频在线免费看 | 国产一区二区三区免费在线 | 婷婷天天色 | 香蕉久久久久久av成人 | 精品视频久久久 | 国产丝袜网站 | 91热| 国产精品亚洲a | 激情久久婷婷 | 日韩精品一区二区三区水蜜桃 | 视频国产在线 | 成人免费网站视频 | 国产一区二区高清不卡 | 在线观看日韩精品视频 | 黄色av网站在线免费观看 | 麻豆系列在线观看 | 亚洲精品伦理在线 | 国产精品99久久99久久久二8 | 91麻豆国产| 日韩经典一区二区三区 | 在线有码中文字幕 | 欧美日韩一级视频 | 国产一区二区三区久久久 | 久久国产电影院 | 久久激情视频网 | 91精品国产91p65| 免费网站黄 | 超碰国产在线观看 | 午夜性生活 | 91av网址| 欧美最猛性xxx | 久久久久免费精品国产小说色大师 | 在线观看精品一区 | 亚洲激情视频 | 成 人 黄 色 视频 免费观看 | 玖玖爱在线观看 | 91高清视频| 日韩电影精品 | 天天夜夜操 | 91桃色国产在线播放 | www.久热 | 超碰人人在 | 国产黄网站在线观看 | 久久久久久久久福利 | 欧美另类高清 videos | 婷婷久草 | 免费在线激情视频 | 久久久999免费视频 日韩网站在线 | 三级小视频在线观看 | 韩国一区二区三区在线观看 | 国产精品久久久久久电影 | 婷婷深爱 | 国产区高清在线 | 久久不射电影院 | 深爱综合网 | 久久伊人八月婷婷综合激情 | 日日草天天草 | 日韩在线国产 | 国产视频首页 | 亚洲乱亚洲乱亚洲 | 在线一区电影 | 日韩av网址在线 | 午夜精品久久久 | 精品在线亚洲视频 | 在线免费看黄色 | 国产午夜精品一区二区三区嫩草 | 成年人黄色大全 | 日韩欧美一区二区三区在线观看 | 国产亚洲婷婷免费 | 天堂av网站| 夜夜操天天摸 | 亚洲黄色在线观看 | 国产精品久久久久久久久久三级 | 六月丁香婷婷在线 | 成人精品电影 | 麻豆91在线播放 | 日本xxxx.com | 精品国自产在线观看 | 人人爽人人干 | 国内精品久久久久久久久 | 国产精品女 | 操操色| 一区二区精品 | 欧美激情精品久久久久 | 色射爱| 免费色黄| 免费国产在线观看 | 天天干天天操av | 成人a免费 | 中文字幕av电影下载 | 天天爽夜夜爽精品视频婷婷 | 99久久电影 | 午夜18视频在线观看 | 午夜精品久久久久久久99水蜜桃 | 国产乱码精品一区二区三区介绍 | 免费三级大片 | 欧美综合在线观看 | 黄色在线观看网站 | 久久免费视频4 | 国产 在线 高清 精品 | 久久久久久伊人 | 欧美一进一出抽搐大尺度视频 | 91夫妻自拍| 男女视频国产 | 精品亚洲免费 | 亚洲免费视频观看 | 色播五月激情综合网 | 香蕉视频91 | 最新日韩电影 | 91.精品高清在线观看 | 在线观看中文字幕 | 成年人在线看片 | 欧美日韩久久一区 | 综合久色 | 91麻豆精品国产自产 | 婷婷丁香在线 | 国产成人av在线影院 | 免费特级黄色片 | 成人免费在线看片 | 91字幕| 狠狠狠狠狠操 | 日韩欧美一级二级 | 成人在线免费看 | 香蕉色综合 | 99热在线观看 | 日韩av片无码一区二区不卡电影 | 亚洲欧美国产精品va在线观看 | 国产一级特黄毛片在线毛片 | 97精品国产97久久久久久久久久久久 | 蜜臀av网址| 91网页版免费观看 | 一级黄色免费 | 亚洲闷骚少妇在线观看网站 | 四虎影视www | 亚洲综合成人婷婷小说 | 欧美99精品 | 91成人在线视频 | 日韩av成人免费看 | 久久男人中文字幕资源站 | 国产一区国产二区在线观看 | 91丨九色丨丝袜 | 国产资源在线播放 | av免费在线免费观看 | 亚洲自拍自偷 | 国产一二三区在线观看 | 国产福利av | 久久精品日韩 | 久久在线免费视频 | 国产一级在线观看视频 | 国产欧美在线一区二区三区 | 日本爱爱免费视频 | 久久黄色免费 | 国产伦理久久精品久久久久_ | 麻豆视频在线免费观看 | 美女久久久久久久 | 天天操天天射天天操 | 91一区二区三区久久久久国产乱 | 欧美日韩在线免费观看视频 | 久久天| 久草在线免费新视频 | 久久久久久久久久久影院 | 黄色免费高清视频 | 黄网站色欧美视频 | 日韩色一区二区三区 | 麻豆高清免费国产一区 | 丁香5月婷婷久久 | 婷婷精品视频 | 免费看国产曰批40分钟 | 日韩在线精品 | 国产69精品久久99不卡的观看体验 | 狠狠干天天色 | 伊人婷婷久久 | 亚洲精品视频一 | 色妞久久福利网 | 深爱激情五月综合 | 欧美久久99| 久久成人高清 | 有码中文字幕在线观看 | 亚洲一区二区三区91 | 国产日产精品久久久久快鸭 | 国产91精品看黄网站在线观看动漫 | 中文字幕av一区二区三区四区 | 青青河边草免费视频 | 欧美视频网址 | 久久免费黄色大片 | 日韩免费在线播放 | 狠狠色丁香九九婷婷综合五月 | 国内精品视频在线 | 国产一区视频在线观看免费 | 久久精品日韩 | 视频一区二区在线 | 亚洲欧洲日韩在线观看 | 日韩欧美一级二级 | 最新色站 | 黄色1级大片 | 亚洲高清在线观看视频 | 国产亚洲成av人片在线观看桃 | 手机在线日韩视频 | 欧美福利视频 | 91亚洲影院| 17videosex性欧美 | 97精品在线视频 | 欧美午夜一区二区福利视频 | 美女福利视频一区二区 | 99精品视频免费观看视频 | 天天摸夜夜操 | 麻豆久久久久 | 久久精品精品电影网 | 91免费视频网站在线观看 | 国产在线精品国自产拍影院 | 丁香激情婷婷 | 日日操日日插 | 成人av片免费看 | 99热在线国产 | av网站播放 | 国产精品11| 婷婷中文在线 | 日本中文字幕网 | 国产在线免费观看 | 亚洲视频456 | 国产精品99在线观看 | 99热国产在线观看 | 丁香婷婷综合激情五月色 | 天天操天天操天天操天天操天天操 | 久久精品国产亚洲aⅴ | 久久免费a | 精品v亚洲v欧美v高清v | 在线日本看片免费人成视久网 | 色香蕉在线| 免费在线电影网址大全 | 久久美女高清视频 | 国产精品18毛片一区二区 | 91精品久久久久久综合乱菊 | 探花在线观看 | 欧美一二三四在线 | 日韩在线视 | 久久久久国产免费免费 | 亚洲成人资源 | 丁香五婷 | 亚洲精品一区二区三区四区高清 | 久久精品欧美一区二区三区麻豆 | 成人av免费在线播放 | 99久久www | 欧美孕妇视频 | 亚洲欧美视频一区二区三区 | 免费三级在线 | 99热日本 | 91精品国产自产老师啪 | 国产午夜三级一区二区三桃花影视 | av中文在线影视 | 91在线精品播放 | 中文十次啦 | 一本一本久久a久久精品综合小说 | 4438全国亚洲精品在线观看视频 | 亚洲狠狠丁香婷婷综合久久久 | 色a综合 | 999电影免费在线观看2020 | 亚洲女同ⅹxx女同tv | 夜夜骑日日操 | 亚洲一区精品人人爽人人躁 | 麻豆影视在线观看 | 韩国一区在线 | 欧美极度另类性三渗透 | 激情五月婷婷综合 | 日本黄网站| 在线免费观看视频你懂的 | 国色综合| 日韩电影中文字幕在线观看 | 日韩精品在线观看视频 | av不卡网站 | 国产美女搞久久 | 99精品国产一区二区三区不卡 | 国产激情电影综合在线看 | 91久久精品一区 | 久久综合九九 | 久久精品激情 | 国产精品视频资源 | 91视频免费播放 | 韩日成人av| 久久免费视频一区 | 99精品偷拍视频一区二区三区 | 久久久九色精品国产一区二区三区 | 国产精品免费久久 | 午夜精品麻豆 | 亚洲视频久久久 | 超碰人人91 | 一级黄色a视频 | 国产成人精品久久久久 | 欧美成人精品欧美一级乱 | 天天操天天添天天吹 | 久久国产高清 | 黄色三级在线 | av在线免费不卡 | 91在线观看黄 | 日韩av有码在线 | 天天色天天搞 | 在线看一区 | 亚洲国产三级在线观看 | 久久久久中文字幕 | 91香蕉视频黄色 | 精品国精品自拍自在线 | 欧美日韩三区二区 | 久久综合中文字幕 | 香蕉视频在线免费 | 精品视频中文字幕 | 久久久久麻豆v国产 | 欧美日韩不卡一区 | 麻豆一区二区 | 久久久免费国产 | 高潮毛片无遮挡高清免费 | 婷婷在线看 | 久久久污 | av电影av在线 | 97视频在线观看免费 | 国模一区二区三区四区 | 日韩国产在线观看 | 91麻豆操 | 区一区二区三区中文字幕 | 黄色毛片一级片 | 又黄又刺激视频 | 久久成| 国产视频在线免费 | 精品色综合 | 亚洲va欧美va人人爽 | 国产专区在线视频 | 亚洲 av网站 | 亚洲精品在线视频观看 | 日本公妇在线观看 | 日韩中文在线字幕 | 最新av在线网站 | 涩涩伊人| 精品亚洲午夜久久久久91 | 亚洲mv大片欧洲mv大片免费 | 精品国产乱码久久 | 午夜婷婷在线播放 | 日韩欧美xxxx | 国产美女精彩久久 | 97在线视频网站 | 国产成人一区在线 | 91亚洲精品乱码久久久久久蜜桃 | 91尤物国产尤物福利在线播放 | 久久久久一区二区三区四区 | av丝袜在线 | 久久综合狠狠综合 | 午夜影视一区 | 国产黄色成人av | 免费观看www小视频的软件 | 久草在线电影网 | 欧美日韩中文视频 | 欧美日韩国产欧美 | 欧美另类sm图片 | 国产成人精品av久久 | 在线精品视频免费观看 | 黄色一级大片免费看 | 亚洲欧美日韩国产一区二区三区 | 成人网中文字幕 | 亚洲精品免费在线播放 | 国产精选视频 | 久久久久久久免费 | 日韩一级成人av | 亚洲色图激情文学 | 91视频麻豆 | 精品久久久久一区二区国产 | 国产在线a视频 | 韩国av免费在线 | 一区二区三区在线影院 | 国产精品综合久久久久 | 国产99视频在线观看 | 国产视频手机在线 | 国产午夜麻豆影院在线观看 | 69视频在线 | 午夜12点 | 中文字幕在线一区二区三区 | 麻豆一精品传二传媒短视频 | 麻花传媒mv免费观看 | 三级av免费观看 | 亚洲免费公开视频 | 国产综合视频在线观看 | 成年人电影免费看 | 99在线精品免费视频九九视 | 国产精品va在线观看入 | 国产精品国产毛片 | 香蕉视频91| 久久久亚洲影院 | av片在线观看 | 国产亚洲综合精品 | 国产色在线视频 | 久久人操 | 国产91精品一区二区麻豆亚洲 | 欧美精品一区二区在线观看 | www.久久色| 天天综合网在线观看 | 成人av播放 | 色欧美视频 | 欧美极品少妇xxxxⅹ欧美极品少妇xxxx亚洲精品 | www免费黄色 | 亚洲片在线资源 | 久久久久久久久久久久电影 | 黄av免费在线观看 | 欧美日韩一级久久久久久免费看 | 色婷婷国产精品一区在线观看 | 国产精品伦一区二区三区视频 | 久久精品视频在线 | 中文字幕一区二区三区精华液 | 久热电影| 超碰免费久久 | 亚洲黄色片在线 | 亚洲精品综合一二三区在线观看 | 色婷婷综合五月 | 久久电影日韩 | 国产欧美精品一区二区三区四区 | 九九精品视频在线看 | 在线亚洲日本 | 91在线九色| 国产尤物视频在线 | 天天在线免费视频 | 亚洲www天堂com | 成人9ⅰ免费影视网站 | 国产精品无av码在线观看 | 丁香婷婷色综合亚洲电影 | 婷婷综合亚洲 | 中文字幕在线播放av | 国产精品久久久久久久久久久久冷 | 久久综合毛片 | 国产精品麻豆三级一区视频 | 免费在线观看av网站 | av电影一区二区三区 | 麻豆视频免费看 | 免费看麻豆 | 成人免费视频视频在线观看 免费 | 国产精品久久久久久婷婷天堂 | 欧美色图狠狠干 | 久久精品7| 国产精品99久久久久久小说 | 狠狠久久综合 | 欧美精品免费在线观看 | 丁香 婷婷 激情 | 婷婷色网址 | 91在线视频在线观看 | 久久一二三四 | 日韩一二三区不卡 | 成人va在线观看 | 国产午夜三级一区二区三桃花影视 | 99视频在线观看一区三区 | 国产精品久久久久久久久久久免费看 | 在线黄色国产 | 精品亚洲男同gayvideo网站 | 97碰视频| 日韩欧美高清视频在线观看 | 亚洲精品视频免费看 | 久久国产精品久久国产精品 | 97超视频免费观看 | 2021国产精品视频 | 天天天天爽| 在线观看视频日韩 | 国产视频一区二区在线观看 | 亚洲欧美视频一区二区三区 | 中文字幕日韩免费视频 | 色丁香色婷婷 | 在线观看视频一区二区 | 99高清视频有精品视频 | 毛片网免费 | 成人精品一区二区三区电影免费 | 在线亚洲人成电影网站色www | 国产亚洲人成网站在线观看 | 中文字幕在线国产精品 | 国产精品久久综合 | 狠狠躁天天躁 | 人人爽人人爽 | 五月综合婷 | 99久久精品国产一区二区三区 | 97超碰在线久草超碰在线观看 | 日韩av伦理片 | 久久99久久99精品中文字幕 | 国产精品久久久久久久久婷婷 | 激情五月婷婷激情 | 国产 欧美 日产久久 | a黄色片| 亚洲免费一级电影 | 91九色蝌蚪国产 | 天天射天天操天天干 | 日韩三级.com | 在线天堂8√ | 黄色视屏av | 久久久久久国产精品亚洲78 | 男女全黄一级一级高潮免费看 | 国产精品欧美精品 | 色综合天天视频在线观看 | 国产看片网站 | 亚洲精品小区久久久久久 | 久久视频免费在线 | 婷婷色视频 | 国产区在线看 | 国产精品成人av在线 | 九九免费在线看完整版 | 2023天天干| 久草免费在线 | 人人爱在线视频 | 欧美综合色 | 久久久久久激情 | 国产精品va在线观看入 | 日韩一级片观看 | 国产精品理论在线观看 | 国产96在线观看 | 中文字幕第一页在线播放 | 美女视频黄免费的久久 | 色欧美视频 | 黄色日本免费 | 久久在现 | 2019av在线视频 | 99精品在线免费视频 | 国产爽视频 | 91看成人 | 91av播放| 成人av在线影视 | 99久久久久久久久 | 国产精品久久久久久爽爽爽 | 日韩大片免费观看 | 国产一区播放 | 在线观看91久久久久久 | 日韩欧美在线免费 | 免费精品视频在线 | 91视频麻豆| 99在线观看精品 | 亚洲 欧洲 国产 精品 | av激情五月| 精品国产1区2区 | 久久久久美女 | 91精品国产三级a在线观看 | 色97在线 | 九草视频在线观看 | 最近高清中文在线字幕在线观看 | 啪啪动态视频 | 亚洲视频 一区 | 91专区在线观看 | 久久久久成人精品亚洲国产 | 精品乱码一区二区三四区 | 91在线视频播放 | 久草在线免费在线观看 | av看片网| 一区二区三区高清在线 | 91chinese在线 | 99热99re6国产在线播放 | 亚洲精品高清视频在线观看 | 日日麻批40分钟视频免费观看 | 亚洲女人天堂成人av在线 | av丝袜在线| 欧美日韩精品二区第二页 | 亚洲精品在线观看的 | 国产在线美女 | 午夜精品福利影院 | 欧美性生活免费看 | 亚洲在线观看av | 国产精品资源在线观看 | 亚州av网站 | 免费久久片 | 在线免费高清视频 | 欧美一级久久久 | 久久久久欧美精品999 | 免费视频在线观看网站 | 最近能播放的中文字幕 | 99视频在线免费观看 | 91视频麻豆视频 | 国产成人av福利 | 五月婷婷丁香在线观看 | 亚洲国产精彩中文乱码av | 久久久91精品国产 | 久久久www成人免费精品张筱雨 | 国产91精品看黄网站 | 在线观看黄色大片 | 超级av在线| 久久精品九色 | 天天操网站 | 色婷婷福利| 色婷婷激情 | 久久爱资源网 | 中文字幕久久精品亚洲乱码 | 久草在线综合 | 免费久久精品视频 | 91精品国产综合久久婷婷香蕉 | 成人动漫精品一区二区 | 日本性xxxxx 亚洲精品午夜久久久 | 日三级在线 | 黄色毛片一级片 | 欧美激情综合色综合啪啪五月 | 97国产 | 欧美日韩大片在线观看 | 日韩电影精品一区 | 欧美成人在线免费观看 | av3级在线| 亚洲 欧美变态 另类 综合 | 射久久 | 中文字幕视频 | 精品视频在线视频 | 欧美日韩国产一二 | 国产美女精品视频 | 日韩精品91偷拍在线观看 | 国产中文字幕免费 | 国内精品视频久久 | 亚洲激情综合网 | 在线观看国产www | 激情综合一区 | 成人a级网站| 九九热re| 免费亚洲婷婷 | 人人操日日干 | av日韩不卡 | 视频在线观看入口黄最新永久免费国产 | 亚洲狠狠婷婷 | 中文视频一区二区 | 中文欧美字幕免费 | av网站地址 | 日韩mv欧美mv国产精品 | av福利第一导航 | 在线观看黄色av | 激情综合五月婷婷 | 9999精品视频| 日韩一级电影在线观看 | 在线导航福利 | 久久五月网 | 在线观看网站黄 | 99视频一区二区 | 狠狠操综合 | av高清网站在线观看 | 国产在线观看,日本 | 伊人天堂久久 | 天天做天天爱夜夜爽 | 天天干天天插伊人网 | 国产精品久久久av | 国产精品不卡在线 | 免费一级特黄毛大片 | 久久亚洲私人国产精品va | 亚洲 综合 激情 | 麻豆果冻剧传媒在线播放 | 亚洲日本欧美 | 免费a一级 | 在线免费黄色av | 91免费网站在线观看 | 亚洲激情精品 | 国产日韩在线一区 | 午夜视频在线观看一区二区 | 亚洲人成免费 | 成人在线视频免费观看 | 久久久精品久久 | 天天做综合网 | 国产伦理一区二区三区 | 天堂av免费| av大片免费看| 色婷婷免费视频 | 在线观看久草 | 欧美最猛性xxxxx(亚洲精品) | 9992tv成人免费看片 | 2019精品手机国产品在线 | 亚洲一级电影在线观看 | 久久九九久久 | 国产美女在线精品免费观看 | 992tv在线成人免费观看 | 九九欧美视频 | 成人国产亚洲 | 丁香婷婷综合五月 | 美女久久久久久久 | 激情欧美丁香 | 久久婷婷一区二区三区 | 成人欧美一区二区三区在线观看 | 91精品老司机久久一区啪 | 国产视频精选 | www.啪啪.com| 欧美日韩亚洲精品在线 | 亚洲视频第一页 | 成年人网站免费观看 | 四虎免费在线观看视频 | 欧美精品成人在线 | 国产精品不卡一区 | 免费成人黄色av | 国产日产欧美在线观看 | 五月天天av | 在线观看视频一区二区三区 | 欧美日韩国产精品一区二区 | 国产香蕉视频在线观看 | a视频在线播放 | 国产特级毛片aaaaaa | 九九九热精品免费视频观看 | 久久精品99国产国产精 | 天天撸夜夜操 | 在线岛国av | 久久在线| 成年人视频在线免费 | 午夜精品久久久久久中宇69 | 91一区二区在线 | 美女国内精品自产拍在线播放 | 欧美久久精品 | 99久久精品午夜一区二区小说 | 欧美视频在线观看免费网址 | 日韩av免费在线看 | 国产视频 久久久 | 午夜精品久久久久久久99 | 婷婷激情在线观看 | 日日躁夜夜躁xxxxaaaa | 国产美女视频免费观看的网站 | av看片在线观看 | 很黄很污的视频网站 | 日韩视频在线观看免费 | 精品999国产 | 亚洲国产精品999 | 亚洲三级网| 激情婷婷色 | 欧美日韩免费一区二区 | 天天综合网在线观看 | 亚洲精选在线观看 | 丁香色综合 | 国产一区二区精品 | 深爱开心激情网 | 亚洲黄色免费在线看 | 91大神dom调教在线观看 | av成人在线网站 | 在线电影中文字幕 | 91九色蝌蚪| 亚洲精品mv在线观看 | 97超碰成人在线 | 欧美日韩视频在线播放 | 91av社区 | 91麻豆精品国产91久久久久久 | 亚洲精品伦理在线 | 久久久久久久久久久成人 | 国产一级淫片在线观看 | av 一区 二区 久久 | 日韩欧美视频免费在线观看 | 国产精品一区二区三区免费视频 | 亚洲影视九九影院在线观看 | 色噜噜狠狠色综合中国 | 国产在线一线 | 国产 一区二区三区 在线 | 美女一区网站 | 在线观看岛国av | 欧美91精品久久久久国产性生爱 | 成人免费中文字幕 | 国产成人精品免费在线观看 | 91精品一区国产高清在线gif | 99久久精品免费看国产麻豆 | 91精品国产网站 | 日本爽妇网 | 激情婷婷丁香 | 欧美性受极品xxxx喷水 | 国产精品h在线观看 | av电影一区二区 | 亚洲综合欧美日韩狠狠色 | 中文字幕在线一区观看 | 成人av在线观 | 国产亚洲精品久久久久5区 成人h电影在线观看 | 亚洲国产欧洲综合997久久, | 欧美国产日韩在线视频 | 日韩.com | 国产免费黄视频在线观看 | wwwwww色 | 精品国产午夜 | 开心激情网五月天 | 99一级片 | 欧美特一级 | 成人免费网站视频 | 免费一级特黄毛大片 | 精品亚洲一区二区 | 香蕉影视app | 丁香六月在线 | 国模精品在线 | 日韩欧美电影在线 | 就要干b| 超碰人人草人人 | 国产精品福利在线观看 | 麻豆视频在线免费看 | 欧美日韩国产mv | 91久久久久久久一区二区 | 天天天干夜夜夜操 | 91精品视频一区二区三区 | 黄色免费网站大全 | 亚洲涩涩涩涩涩涩 | 免费污片 | 婷婷色吧 | 黄色网在线免费观看 | 久久精品综合一区 | 日韩av资源站 | 久久免费看av | 日韩不卡高清视频 | 亚洲国产精品电影 | 久射网| 黄色一级性片 | 亚洲天堂网在线播放 | 国产精品福利无圣光在线一区 | 午夜精品久久久久久久99 | 欧美日韩亚洲一 | 九九久久国产 | 成人va视频 | 免费色视频网站 | 在线成人性视频 | 成人高清在线 | 成年人在线看片 | 丝袜护士aⅴ在线白丝护士 天天综合精品 | 免费a级黄色毛片 | 成人a视频在线观看 | 亚洲精品国产麻豆 | 国产一级片毛片 | 精品产品国产在线不卡 | 国产黄色av | 五月婷婷六月丁香 | 国产麻豆精品久久 | 国产精品丝袜 | a黄色| va视频在线| 国产成人亚洲精品自产在线 | 中文字幕在线观看网 | 久久免费国产精品 | 久久黄页 | 免费看av片网站 | 在线国产一区二区 | 久久综合九色综合欧美就去吻 | 久久久精品一区二区 | 精品国产91亚洲一区二区三区www | 黄色免费大片 | 免费视频91蜜桃 | 免费成人短视频 | 精品国产一区二区三区日日嗨 | 国偷自产中文字幕亚洲手机在线 | 国产91影院 | 日本中文字幕影院 | 美女精品在线观看 | 久久综合九色综合久久久精品综合 | 亚洲jizzjizz日本少妇 | 久久精品4 | 欧美色图视频一区 | 国产精品久久久久av免费 | 久久久精品电影 | 中文字幕中文字幕在线中文字幕三区 | 狠狠操电影网 | 色婷丁香 | 国产精品久99| 中文字幕视频网 | 欧美日韩不卡在线观看 | 99视频在线播放 | 夜夜躁狠狠躁日日躁视频黑人 | 草久在线观看视频 | 又黄又爽的免费高潮视频 | 青青河边草免费直播 | 久久午夜网 | 91看片淫黄大片一级在线观看 | 久草在线手机观看 | 久草视频在线免费播放 | 久久久久久久久久影视 | 精品久久久久久久久久岛国gif | 国产视频1 | 97精品国产aⅴ | 91视频麻豆| 欧美一区二区在线刺激视频 | 免费av试看| 特级西西444www大胆高清无视频 | 色国产视频 | 精品久久片 | 人人爽人人干 | 久久精品国产免费看久久精品 | a极黄色片 | 碰超在线观看 | 国产超碰在线观看 | 国产精品永久在线 | 久久你懂的 | 9999国产| 亚洲天天看 | 亚洲最新av在线网址 | 成人免费在线视频观看 | 欧美日韩视频 | 国产成人精品av久久 | 免费在线观看污 | 国产青草视频在线观看 | 久久成年人视频 | 亚洲欧美日韩国产精品一区午夜 | 欧洲精品视频一区 | 成人a视频片观看免费 | 97在线观看免费观看 | 色网免费观看 | 久久国产精品色婷婷 | 国产69精品久久app免费版 | 免费av在线网 | 亚洲国产精品一区二区久久,亚洲午夜 | 五月天婷亚洲天综合网精品偷 | 国产精品专区一 | 五月天,com| 91精品国产91热久久久做人人 | 国产高清不卡在线 | 五月婷激情 | 91成人在线观看喷潮 | 久久久福利影院 | 日韩xxx视频 | 99久久99久久 | av高清影院 | 国内精品久久久久久久影视麻豆 | 日日干夜夜干 | 久久激情视频 久久 | 色婷婷狠 | 国产精久久久久久妇女av | 日韩免费观看av | 国产一区二区三区视频在线 | 不卡av免费在线观看 | 日韩视频在线不卡 | 黄色网www | 国产二级视频 | av免费在线网站 | 久久免费99精品久久久久久 | 亚洲女同videos | 免费看黄在线观看 | 日韩区欠美精品av视频 | 亚洲女裸体 | 奇米影视8888在线观看大全免费 | 久久精品电影院 | 久久久一本精品99久久精品66 | 99久久日韩精品免费热麻豆美女 | 不卡的av在线播放 | www.成人精品 | 国产小视频免费在线观看 | 久久久av免费 | 中文字幕一区二区三区久久蜜桃 | 亚洲人在线| 在线观看免费av网 | 中文av日韩 | 免费日韩| 国内精品久久久精品电影院 | 在线观看一区二区精品 | 免费手机黄色网址 | 欧美一区二区在线免费观看 | www.99热精品| 国产一区在线播放 | 狠狠操导航| 国产精品一区二区三区在线 | 亚洲国产日韩在线 | 白丝av在线 | 亚洲国产视频网站 | av在线官网 | 国产亚洲午夜高清国产拍精品 |