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

歡迎訪問 生活随笔!

生活随笔

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

编程问答

libwebsockets的学习

發布時間:2023/12/20 编程问答 44 豆豆
生活随笔 收集整理的這篇文章主要介紹了 libwebsockets的学习 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

1 下載源碼

apt-get source libwebsockets-devsudo apt-get install libwebsockets-dev

2 編譯(查看readme.)

cd libwebsockets mkdir build cd build cmake ../ -D

參考 README.build.md?? cmake .. -DCMAKE_BUILD_TYPE=DEBUG

3 使用

3.1 Client

/*============================================================================Name : test-websocket.cAuthor : cjVersion :Copyright : Your copyright noticeDescription : Hello World in C, Ansi-style============================================================================*/#include <stdio.h> #include <stdlib.h> #include <libwebsockets.h> #include "clog.h" #include <pthread.h>struct session_data {char name[100]; };static int ws_service_callback(struct lws *wsi,enum lws_callback_reasons reason, void *user, void *in, size_t size) {int n;struct session_data *session = (struct session_data*) user;switch (reason) {case LWS_CALLBACK_GET_THREAD_ID:break;case LWS_CALLBACK_CLIENT_ESTABLISHED: {log_d("CLIENT_ESTABLISHED");char *str = "hello start..";int len = strlen(str);unsigned char *out = (unsigned char *) malloc(sizeof(unsigned char)* (LWS_SEND_BUFFER_PRE_PADDING + len+ LWS_SEND_BUFFER_POST_PADDING));memcpy(out + LWS_SEND_BUFFER_PRE_PADDING, str, len);n = lws_write(wsi, out + LWS_SEND_BUFFER_PRE_PADDING, len,LWS_WRITE_TEXT);//sprintf(session->name, "start....");//log_d("n=%d", n);}break;case LWS_CALLBACK_CLIENT_CONNECTION_ERROR:log_d("CONNECTION_ERROR");return -1;break;case LWS_CALLBACK_CLOSED:log_d("LWS_CALLBACK_CLOSED");break;case LWS_CALLBACK_WSI_DESTROY:log_d("LWS_CALLBACK_WSI_DESTROY");break;case LWS_CALLBACK_CLIENT_RECEIVE:log_d("session:%s, recv(len=%d)>%s", session->name, size, (char * ) in);{char *str = "hello world. recv";int len = strlen(str);unsigned char *out = (unsigned char *) malloc(sizeof(unsigned char) * (LWS_PRE + len));memcpy(out + LWS_PRE, str, len);n = lws_write(wsi, out + LWS_PRE, len, LWS_WRITE_BINARY);//log_d("n=%d", n);n = lws_callback_on_writable(wsi);//log_d("n=%d", n);}break;case LWS_CALLBACK_CLIENT_WRITEABLE: {//log_d("LWS_CALLBACK_CLIENT_WRITEABLE");char *str = "write.....";int len = strlen(str);unsigned char *out = (unsigned char *) malloc(sizeof(unsigned char) * (LWS_PRE + len));memcpy(out + LWS_PRE, str, len);n = lws_write(wsi, out + LWS_PRE, len, LWS_WRITE_BINARY);n = lws_callback_on_writable(wsi);}break;default:break;}return 0; } #ifdef WCLIENT int main(int argc,char **argv) { #else int main_client() { #endifconst char *address = "127.0.0.1";struct lws_context *context = NULL;struct lws_context_creation_info info;struct lws *wsi = NULL;struct lws_protocols protocol; // struct sigaction act; // act.sa_handler = INT_HANDLER; // act.sa_flags = 0; // sigemptyset(&act.sa_mask); // sigaction( SIGINT, &act, 0);memset(&info, 0, sizeof info);info.port = CONTEXT_PORT_NO_LISTEN;info.iface = NULL;info.protocols = &protocol;info.ssl_cert_filepath = NULL;info.ssl_private_key_filepath = NULL;info.extensions = NULL;info.gid = -1;info.uid = -1;info.options = 0;protocol.name = "abc";protocol.callback = &ws_service_callback;protocol.per_session_data_size = sizeof(struct session_data);protocol.rx_buffer_size = 65535;protocol.id = 0;protocol.user = NULL;context = lws_create_context(&info);log_d("[Main] context created.");if (context == NULL) {log_d("[Main] context is NULL.");return -1;}#if 0wsi = lws_client_connect(context, address, 1883, 0, "/123","111:5000",NULL, protocol.name, -1); #elsestruct lws_client_connect_info i;memset(&i, 0, sizeof(i));i.port = 8080;i.address = address;i.path = "abc";i.context = context;i.ssl_connection = 0;i.host = i.address;i.origin = i.address;i.ietf_version_or_minus_one = -1;i.client_exts = NULL;i.protocol = "abc";wsi = lws_client_connect_via_info(&i); #endifif (wsi == NULL) {log_d("[Main] wsi create error.");return -1;}log_d("start....");int n = 0;while (n >= 0) {//當連接斷開時需要重新連接在這使用標志位//if conflag==0 lws_client_connect_via_infon = lws_service(context, 50);}lws_context_destroy(context);log_d("close....");return EXIT_SUCCESS; }
LWS_CALLBACK_CLIENT_ESTABLISHED第一次連接 這是客戶端
LWS_CALLBACK_CLIENT_RECEIVE接收到數據 這是客戶端
LWS_CALLBACK_CLIENT_WRITEABLE可以發送數據了
LWS_CALLBACK_WSI_DESTROY正在銷毀,在這可以釋放ESTABLISHED時malloc的數據

3.2 Server

/*============================================================================Name : test-websocket.cAuthor : cjVersion :Copyright : Your copyright noticeDescription : Hello World in C, Ansi-style============================================================================*/#include <stdio.h> #include <stdlib.h> #include <libwebsockets.h> #include "clog.h" #include <pthread.h>struct session_data {char name[100]; };static int ws_service_callback(struct lws *wsi,enum lws_callback_reasons reason, void *user, void *in, size_t size) {int n;struct session_data *session = (struct session_data*) user;switch (reason) {case LWS_CALLBACK_GET_THREAD_ID:break;case LWS_CALLBACK_ESTABLISHED: {log_d("ESTABLISHED");char *str = "hello start..";int len = strlen(str);unsigned char *out = (unsigned char *) malloc(sizeof(unsigned char)* (LWS_SEND_BUFFER_PRE_PADDING + len+ LWS_SEND_BUFFER_POST_PADDING));memcpy(out + LWS_SEND_BUFFER_PRE_PADDING, str, len);n = lws_write(wsi, out + LWS_SEND_BUFFER_PRE_PADDING, len,LWS_WRITE_TEXT);sprintf(session->name, "start....");}break;case LWS_CALLBACK_CLIENT_CONNECTION_ERROR:log_d("CONNECTION_ERROR");return -1;break;case LWS_CALLBACK_CLOSED:log_d("LWS_CALLBACK_CLOSED");break;case LWS_CALLBACK_WSI_DESTROY:log_d("LWS_CALLBACK_WSI_DESTROY");break;case LWS_CALLBACK_RECEIVE://log_d("session:%s, recv(len=%d)>%s", session->name, size, (char * ) in);{char *str = "hello world. recv";int len = strlen(str);unsigned char *out = (unsigned char *) malloc(sizeof(unsigned char) * (LWS_PRE + len));memcpy(out + LWS_PRE, str, len);n = lws_write(wsi, out + LWS_PRE, len, LWS_WRITE_BINARY);n = lws_callback_on_writable(wsi);}break;case LWS_CALLBACK_SERVER_WRITEABLE: {//log_d("LWS_CALLBACK_CLIENT_WRITEABLE");char *str = "write....ser.";int len = strlen(str);unsigned char *out = (unsigned char *) malloc(sizeof(unsigned char) * (LWS_PRE + len));memcpy(out + LWS_PRE, str, len);n = lws_write(wsi, out + LWS_PRE, len, LWS_WRITE_BINARY);n = lws_callback_on_writable(wsi);}break;default:break;}return 0; }int main(void) {struct lws_context *context = NULL;struct lws_context_creation_info info;struct lws_protocols protocol; // struct sigaction act; // act.sa_handler = INT_HANDLER; // act.sa_flags = 0; // sigemptyset(&act.sa_mask); // sigaction( SIGINT, &act, 0);memset(&info, 0, sizeof info);info.port = 8080;info.iface = NULL;info.protocols = &protocol;info.ssl_cert_filepath = NULL;info.ssl_private_key_filepath = NULL;info.extensions = NULL;info.gid = -1;info.uid = -1;info.options = 0;protocol.name = "abc";protocol.callback = &ws_service_callback;protocol.per_session_data_size = sizeof(struct session_data);protocol.rx_buffer_size = 65535;protocol.id = 0;protocol.user = NULL;context = lws_create_context(&info);log_d("[Main] context created.");if (context == NULL) {log_d("[Main] context is NULL.");return -1;}log_d("start....");int n = 0;while (n >= 0) {n = lws_service(context, 50);}lws_context_destroy(context);return EXIT_SUCCESS; }
LWS_CALLBACK_ESTABLISHED

收到客戶端連接,在這里可以注冊user (session_data) 到一個線程安全Lock的鏈表上

user中可以添加一個發送數據隊列

LWS_CALLBACK_RECEIVE收到客戶端數據,后續需要寫數據可以添加使用 lws_callback_on_writable 來處理寫事件
LWS_CALLBACK_SERVER_WRITEABLE可以寫數據到客戶端,添加 lws_callback_on_writable, 這時可以把session中存儲的代發送數據發送出去
LWS_CALLBACK_WSI_DESTROY釋放數據開始 ,這里請取消注冊到線程安全客戶端隊列里面
LWS_CALLBACK_CLOSED有時候不會到這來,最好在DESTROY中處理

對于libwebsockets高級應用方面,我參考了 WebRTC+libwebsockets+Janus的秒開實踐_一朵喇叭花壓海棠的博客-CSDN博客_lws_callback_on_writable

? 里面說的 libwebsockets IO的優化

在這里可以參考一下mqtt服務器mosquitto

C++ 處理封裝邏輯

/*獲取wsi的fd遠程IP, 這樣寫差不多是為libwebsockets增加功能 */ static int lws_get_connectip(struct lws* wsi,char localip[20], int* localport,char remip[20], int* remport) {lws_sockfd_type fd = lws_get_socket_fd(wsi);if (fd < 0){perror("lws_get_socket_fd failed ! \n");return -1;}struct sockaddr_in sockAddr;socklen_t addrLen = sizeof(sockAddr);getsockname(fd, (struct sockaddr*)&sockAddr, &addrLen);inet_ntop(AF_INET, &sockAddr.sin_addr, localip, 20);*localport = ntohs(sockAddr.sin_port);addrLen = sizeof(sockAddr);getpeername(fd, (struct sockaddr*)&sockAddr, &addrLen); //得到遠程IP地址和端口號inet_ntop(AF_INET, &sockAddr.sin_addr, remip, 20); //IPV4*remport = ntohs(sockAddr.sin_port); //對方的端口號return 0; }class BuffCache {char* data;int size;int pos; public:BuffCache(){data = NULL;size = 0;pos = 0;}~BuffCache(){if (data)free(data);}void addData(void* _data, int _size){if (pos + _size > size){size = pos + _size + 10;if (data){data = (char*)realloc(data, size);}else{data = (char*)calloc(1, size);}}memcpy(data + pos, _data, _size);pos += size;}char* getData(){return data;}int getSize(){return pos;}void reset(){pos = 0;}};class WSMsg {char* data;char* _ptr;size_t len; public:typedef std::shared_ptr<WSMsg> Ptr;WSMsg(){data = NULL;len = 0;}~WSMsg(){if (data)free(data);}void setData(const void* _data, int size){data = (char*)calloc(1, size + LWS_PRE + 20);if (data){memcpy(data + LWS_PRE, _data, size);_ptr = data + LWS_PRE;len = size;}}void* getData(){return data + LWS_PRE;}size_t getLen(){return len;}static WSMsg::Ptr build(const void* data, int len){WSMsg::Ptr msg = std::make_shared<WSMsg>();msg->setData(data, len);return msg;}static WSMsg::Ptr buildFromJSON(cJSON* json){char* buff = cJSON_Print(json);WSMsg::Ptr msg = WSMsg::build(buff, strlen(buff));free(buff);return msg;} };static int _websocket_callback_app(struct lws* wsi,enum lws_callback_reasons reason, void* user, void* in, size_t len);static struct lws_protocols protocols[] = {//{ "http", lws_callback_http_dummy, 0, 0 },{"LxAppProtocol", _websocket_callback_app, /100, /1024 * 1024}, //500k/{ NULL, NULL, 0, 0 } /* terminator */ };struct lws* wsi_connect_client(struct lws_context* context, const char* addr) {struct lws_client_connect_info i;memset(&i, 0, sizeof(i));i.path = "/test";i.address = addr;i.port = 12345; //默認端口i.context = context;i.ssl_connection = 0;i.host = i.address;i.origin = i.address;i.ietf_version_or_minus_one = -1;i.client_exts = NULL;i.protocol = "xxxx";return lws_client_connect_via_info(&i); }//ws 會話 class WSSession {struct lws* _wsi;int fd;char local_ip[20]; //本地int local_port;char rem_ip[20]; //遠程IPint peer_port; //遠程端口std::string uri;int conType;std::mutex _mtx;std::list<WSMsg::Ptr> _txMsgList; //發送消息列表bool _need_close;BuffCache bufCache; public:typedef std::shared_ptr<WSSession> Ptr;typedef enum{//連接類型 //鏈接模式MyServer = 0, //我是服務器,別人連接我MyClient, //連接到外部,} ConnectType;WSSession(){data_type = WS_DATA_NONE;fd = 0;_need_close = false;memset(&lxProtoCtx, 0, sizeof(lxProtoCtx));}void set_lws(struct lws* wsi){_wsi = wsi;fd = (int)lws_get_socket_fd(_wsi);//lws_get_protocol(wsi);lws_get_connectip(wsi, local_ip, &local_port, rem_ip, &peer_port);char buff[100];memset(buff, 0, sizeof(buff));lws_hdr_copy(wsi, buff, sizeof(buff), WSI_TOKEN_GET_URI);uri = buff;_need_close = false;}void setDeviceID(const char* id){strcpy(lxProtoCtx.device_id, id);}struct lws* get_lws(){return _wsi;}void setConnectType(WSSession::ConnectType t){conType = (int)t;}void debug(){std::cout << "fd=" << fd << std::endl;std::cout << "local_ip:" << local_ip << ":" << local_port << std::endl;std::cout << "rem_ip:" << rem_ip << ":" << peer_port << std::endl;std::cout << "uri:" << uri << std::endl;}//初始化處理void initSession();//接收消息void onRecv(void* in, int size, int is_final, int is_binary){bufCache.addData(in, size);if (is_final){char* buff = bufCache.getData();if (WS_DATA_TYPE_LXPROTO_JSON == data_type)onHandleLxProtoMsg(buff, bufCache.getSize());bufCache.reset();}}//處理lx協議消息int onHandleLxProtoMsg(const char* msg, int msglen);///void asyncClose(){_need_close = true;}bool isNeedClose(){return _need_close;}size_t sendMessage(WSMsg::Ptr& msg){std::lock_guard<std::mutex> lock(_mtx);_txMsgList.push_back(msg);return _txMsgList.size();}size_t sendMessage(const void* data, int len){std::lock_guard<std::mutex> lock(_mtx);WSMsg::Ptr msg = WSMsg::build(data, len);_txMsgList.push_back(msg);return _txMsgList.size();}size_t sendMessage(cJSON* json){std::lock_guard<std::mutex> lock(_mtx);WSMsg::Ptr msg = WSMsg::buildFromJSON(json);_txMsgList.push_back(msg);return _txMsgList.size();}size_t msgCount(){std::lock_guard<std::mutex> lock(_mtx);return _txMsgList.size();}WSMsg::Ptr popFirstMsg(){std::lock_guard<std::mutex> lock(_mtx);if (_txMsgList.size() == 0){return nullptr;}WSMsg::Ptr msg = _txMsgList.front();_txMsgList.pop_front();return msg;}bool checkMsg(){//判斷的心跳消息if (msgCount() > 0 || isNeedClose()){//lws_callback_all_protocollws_callback_on_writable(get_lws());return true;}return false;} };//Websocket Server class WSServer {std::atomic_bool _runflag;std::thread thread;int _listen_port;std::mutex _mtx;std::list<WSSession::Ptr> sessions;std::string _host_server;std::string _devid; //設備IDstruct lws* _host_wsi;struct lws_context* _context; public:WSServer(){_runflag = false;_listen_port = -1;_host_wsi = NULL;_context = NULL;}~WSServer(){if (_runflag){stop();std::cout << __FUNCTION__ << std::endl;}}void setListenPort(int port){_listen_port = port;}//是否運行中bool isRunning(){return _runflag;}//停止void stop(){if (_runflag){_runflag = false;thread.join();}}//啟動void start(){if (_runflag)throw std::runtime_error("is running...");_runflag = true;WSServer* serverPtr = this;thread = std::thread([serverPtr]{serverPtr->run();});}//添加需要連接的服務器void addConnect(const char* host, const char* devid){_host_server = host;_devid = devid;}std::string& getDevID(){return _devid;}//連接失敗void wsi_connect_error(struct lws* wsi){_host_wsi = NULL;}//連接斷開void wsi_distory(struct lws* wsi){if (wsi == _host_wsi){std::cout << "close _host_wsi" << std::endl;_host_wsi = NULL;}std::lock_guard<std::mutex> lock(_mtx);for (auto itr = sessions.begin(); itr != sessions.end();){WSSession::Ptr s = (*itr);if (s->get_lws() == wsi)itr = sessions.erase(itr);else++itr;}}//添加一個會話void addSession(WSSession::Ptr& session){std::lock_guard<std::mutex> lock(_mtx);sessions.push_back(session);LOGI("WSServer", "add session\n");}//廣播一個消息void broadcastMessage(const void* data, int len){std::lock_guard<std::mutex> lock(_mtx);for (auto itr = sessions.begin(); itr != sessions.end(); ++itr){(*itr)->sendMessage(data, len);}if (sessions.size() > 0 && _context){lws_cancel_service(_context);}}//檢測發送消息void checkMsg(){std::lock_guard<std::mutex> lock(_mtx);for (auto itr = sessions.begin(); itr != sessions.end(); ++itr){(*itr)->checkMsg();}}//如果this被釋放會有問題哦..void run(){struct lws_context_creation_info info;struct lws_context* context = NULL;//struct lws_client_connect_info i;int ret = 0;memset(&info, 0, sizeof(info));info.port = CONTEXT_PORT_NO_LISTEN;info.port = _listen_port;info.iface = NULL;info.protocols = protocols;info.ssl_cert_filepath = NULL;info.ssl_private_key_filepath = NULL;info.extensions = NULL;//lws_get_internal_extensions();info.gid = -1;info.uid = -1;info.options = 0;//info.count_threads = 1;info.options = LWS_SERVER_OPTION_VALIDATE_UTF8;info.mounts = NULL;info.user = (void*)this;//是否啟用服務器功能呢?context = lws_create_context(&info);if (!context){perror("not create context");//lws_cancel_service(_lws_context_server);return;}_context = context;printf("user:%s\n", (char*)lws_context_user(context));while (!ret && isRunning()){//什么時候開始連接呢?if (_host_wsi == NULL && _host_server.length() > 0){_host_wsi = wsi_connect_client(context, _host_server.c_str());LOGI("WSServer", "connect >>>> %p\n", _host_wsi);}//checkMsg();ret = lws_service(context, 1000);}lws_context_destroy(context);_context = NULL;LOGI("WSServer", "run exit\n");} };static int _websocket_callback_app(struct lws* wsi,enum lws_callback_reasons reason, void* user, void* in, size_t len) {struct UserCtx{WSSession* session;};struct lws_context* ctx = lws_get_context(wsi);WSServer* wsServer = (WSServer*)lws_context_user(ctx);struct UserCtx* userCtx = (struct UserCtx*)user;switch ((int)reason){case LWS_CALLBACK_PROTOCOL_INIT:break;case LWS_CALLBACK_WSI_CREATE: //user=NULL//log_d("websocket", "LWS_CALLBACK_WSI_CREATE wsi_session=%p\n", wsi_session);break;case LWS_CALLBACK_CLIENT_CONNECTION_ERROR:printf("服務器鏈接失敗\r\n");if (wsServer)wsServer->wsi_connect_error(wsi);break;case LWS_CALLBACK_CLIENT_ESTABLISHED: //鏈接ws服務器成功,client modecase LWS_CALLBACK_ESTABLISHED: //webserver server模式時{printf("連接成功 \r\n");memset(userCtx, 0, sizeof(struct UserCtx));WSSession::Ptr session = std::make_shared<WSSession>();session->set_lws(wsi);if (reason == LWS_CALLBACK_CLIENT_ESTABLISHED)session->setConnectType(WSSession::ConnectType::MyClient);if (reason == LWS_CALLBACK_ESTABLISHED)session->setConnectType(WSSession::ConnectType::MyServer);session->debug();if (wsServer)wsServer->addSession(session);userCtx->session = session.get();std::string devID = wsServer->getDevID();session->setDeviceID(devID.c_str());session->initSession();//不能在這里發消息...........//lws_callback_on_writable(wsi);break;}case LWS_CALLBACK_CLOSED:printf("LWS_CALLBACK_CLOSED:鏈接斷開:%p\n", wsi);break;case LWS_CALLBACK_WSI_DESTROY:{printf("LWS_CALLBACK_WSI_DESTROY:%p\n", wsi);if (wsServer)wsServer->wsi_distory(wsi);return -1;}break;/接收-發送/case LWS_CALLBACK_CLIENT_RECEIVE: //收到數據case LWS_CALLBACK_RECEIVE: //服務器模式接收{printf(">>>接收數據,%s isfinal:%d, 長度:%d\n",lws_frame_is_binary(wsi) ? "bin" : "txt",lws_is_final_fragment(wsi),len);userCtx->session->onRecv(in,len,lws_is_final_fragment(wsi),lws_frame_is_binary(wsi));}break;case LWS_CALLBACK_SERVER_WRITEABLE: //服務端寫入case LWS_CALLBACK_CLIENT_WRITEABLE: //客戶端寫入{//作為服務器來發送消息時,text會被加密,固不能使用buff緩存//如果發送隊列阻塞則不能發送消息.....WSMsg::Ptr msg = userCtx->session->popFirstMsg();if (msg){char* ptr = (char*)(msg->getData());printf("發送消息:[%s], len=%d\n", ptr, msg->getLen());int ret = lws_write(wsi, (unsigned char*)ptr, msg->getLen(), LWS_WRITE_BINARY);//LWS_WRITE_BINARY);printf("發送:ret=%d\n", ret);}if (userCtx->session->isNeedClose())return -1; #if 0{uint8_t ping[LWS_PRE + 125];int m, n = 0;n = lws_snprintf((char*)ping + LWS_PRE, 125,"ping body!");lwsl_user("Sending PING %d...\n", n);m = lws_write(wsi, ping + LWS_PRE, n, LWS_WRITE_PING);if (m < n) {lwsl_err("sending ping failed: %d\n", m);return -1;}} #endif}break;}return 0; }void WebSocketServerTest(){WSServer server1;WSServer server2;server1.setListenPort(11258);char id[50];strcpy(id, "112233445677");server1.start();server2.addConnect("192.168.0.189", id);server2.start();const char* msg = "hello xxxxxx,ccccc";for (int i = 0; i < 100; i++){Sleep(1*1000);server1.broadcastMessage(msg, strlen(msg));//server2.broadcastMessage(msg, strlen(msg));}server1.stop();server2.stop();LOGI("test", "stop\n");}

總結

以上是生活随笔為你收集整理的libwebsockets的学习的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

免费色婷婷 | 蜜臀av性久久久久av蜜臀妖精 | 最近中文字幕高清字幕免费mv | 欧洲成人av| 国产欧美高清 | 97色资源| 国产做aⅴ在线视频播放 | 天天干天天操天天爱 | 日韩在线免费播放 | 最新一区二区三区 | 国产伦精品一区二区三区在线 | 国产 欧美 日产久久 | 成人av在线资源 | 久久精品免费播放 | 91精品视频免费 | 日韩精品专区 | 欧美性视频网站 | 日韩三级视频在线观看 | 狠狠色丁香婷婷综合久久片 | 国产精品高清在线 | 国产精品嫩草影院99网站 | 天堂网在线视频 | 亚洲国产激情 | 国产中文字幕网 | 天天色天天射综合网 | 91毛片在线观看 | 免费观看一级特黄欧美大片 | 日韩av看片 | 成人全视频免费观看在线看 | 制服丝袜欧美 | 久久午夜鲁丝片 | 久久综合婷婷 | 久久亚洲日本 | 亚洲日本va午夜在线影院 | 日韩精品一区电影 | 国产福利不卡视频 | 国产精品18久久久久久首页狼 | 久久久久久久久久网 | 视频一区久久 | 天天操人人要 | 91在线视频网址 | 欧美a视频在线观看 | 一区二区三区在线免费播放 | 黄色软件视频大全免费下载 | 国产成人免费观看 | 高清av影院| 人成电影网 | 波多野结衣视频网址 | 成人av片在线观看 | 欧美日韩在线第一页 | 久久久国产精品电影 | 亚洲国产精品免费 | 在线观看亚洲a | 国产日产精品一区二区三区四区 | 五月婷婷av | 国产精品99久久久精品免费观看 | 国内综合精品午夜久久资源 | www.久久婷婷| 色婷婷精品| a级国产乱理论片在线观看 伊人宗合网 | 日韩有码中文字幕在线 | 伊人久久五月天 | 亚洲更新最快 | www.久久成人 | 六月婷婷色 | 国产传媒一区在线 | 999久久久久久久久久久 | 亚洲精品乱码久久久久久蜜桃不爽 | 在线免费观看国产黄色 | 欧美日韩免费观看一区=区三区 | 色婷婷国产在线 | 91亚洲精品国偷拍自产在线观看 | 996久久国产精品线观看 | 超碰久热 | 日日弄天天弄美女bbbb | 国产精品短视频 | 国产中文字幕久久 | av网站有哪些 | 国语麻豆| 不卡av在线免费观看 | 中文字幕精 | 天天插狠狠插 | 在线小视频你懂得 | 嫩草伊人久久精品少妇av | 国产精品18久久久久久久久 | 久久精品8 | 91av短视频| 国产精品12345| 国产黄网站在线观看 | 特黄免费av| 国产黄色精品在线 | 成人av影视观看 | 日韩免费三级 | 成人超碰在线 | 久久av免费观看 | 久色伊人 | 国产精品97| 在线观看免费版高清版 | 综合网在线视频 | 天天曰天天射 | 午夜99| 最近日本mv字幕免费观看 | 成人av在线一区二区 | 日韩美精品视频 | 天天操天天射天天插 | 五月av在线| 丁香综合激情 | 91九色蝌蚪视频网站 | 在线播放国产精品 | 免费大片黄在线 | 国产成人精品午夜在线播放 | 中文字幕亚洲在线观看 | 免费看黄20分钟 | 日韩乱码在线 | 伊人狠狠色丁香婷婷综合 | 精品日本视频 | 中文字幕精品www乱入免费视频 | 在线免费观看视频你懂的 | 三级黄在线| 亚洲成人精品在线 | 婷婷日韩 | 亚洲精品高清在线观看 | 国产精品毛片一区视频播不卡 | 精品免费一区 | 国产成人专区 | 欧美日韩另类在线观看 | 在线播放视频一区 | 免费瑟瑟网站 | 美女视频黄的免费的 | 中文字幕一区二区三区四区久久 | 久久久久久久福利 | av先锋中文字幕 | 亚洲精品美女久久17c | 精品在线观看免费 | 九九热精品视频在线观看 | 欧美日韩精品电影 | 激情视频二区 | 久久久久久久久国产 | 黄色日视频 | 欧美日本高清视频 | 500部大龄熟乱视频使用方法 | 日本精品一区二区三区在线播放视频 | 久久影院精品 | 蜜桃视频成人在线观看 | 亚洲精品456在线播放乱码 | www色网站| 中文字幕一区2区3区 | 九九影视理伦片 | 在线观看av中文字幕 | 国产婷婷视频在线 | 精品久久久久国产免费第一页 | av电影在线不卡 | 一区二区三高清 | 久久综合久久久久88 | 久久久精品国产免费观看一区二区 | 午夜精品一区二区三区在线视频 | 国产美女被啪进深处喷白浆视频 | 国产精品网址在线观看 | 亚洲婷婷网 | 中文字幕国产精品一区二区 | 国产精品久久嫩一区二区免费 | 中文字幕亚洲欧美日韩2019 | 国产精品一区二区在线观看 | 天天拍夜夜拍 | 国产毛片aaa | 日韩精品在线观看视频 | 中文字幕在线免费97 | 久久九九久久九九 | 久久首页 | 欧美久草视频 | 免费一级毛毛片 | 91视频免费看片 | 国产成人中文字幕 | 亚洲美女免费精品视频在线观看 | 亚洲春色奇米影视 | 亚洲电影一区二区 | 豆豆色资源网xfplay | 久草视频手机在线 | 亚洲午夜久久久久久久久 | 伊人狠狠色 | 久久久久麻豆v国产 | 色婷婷99| 欧美日韩一区二区三区视频 | 成人毛片a | 九9热这里真品2 | 久草网在线视频 | 日韩欧美不卡 | 精品国产视频在线 | 久久精品视频99 | 日韩免费在线一区 | 又色又爽又激情的59视频 | 国产中文字幕在线播放 | 亚洲春色综合另类校园电影 | 中文字幕在线播放视频 | 亚洲高清av | 91最新在线观看 | 日韩99热| 精品福利视频在线观看 | 欧美日韩久| 草久草久| 91丨九色丨丝袜 | 韩国av一区二区三区在线观看 | 午夜久久久精品 | 久久久91精品国产一区二区精品 | 国产一级片网站 | 午夜av免费| 国产精品九九热 | 在线视频成人 | 在线视频你懂 | 在线亚州 | 婷婷综合电影 | 久久国产精品99国产 | 人人射人人爱 | 波多野结衣电影一区二区 | 成人xxxx | 99色婷婷| 亚洲国产免费av | 999久久久久久久久久久 | 男女靠逼app | 日韩视频一区二区三区在线播放免费观看 | 毛片基地黄久久久久久天堂 | 激情五月看片 | 中文av日韩 | 亚洲天天在线日亚洲洲精 | 亚洲第一av在线 | 日韩精品一区二区三区免费观看 | 综合激情av | 欧美激情精品久久久久 | 国内精品视频在线 | 手机看片99 | 狠狠色丁香婷婷综合久小说久 | 国产一区欧美二区 | 亚洲精品视频在线观看免费视频 | 91片网 | 国产精品96久久久久久吹潮 | 97超碰中文字幕 | 中文在线免费观看 | 色搞搞 | 久久综合丁香 | 青青草华人在线视频 | 在线视频 国产 日韩 | av丝袜制服| 日韩在线免费小视频 | 欧美日韩视频一区二区三区 | 国产清纯在线 | 精品一区二区在线观看 | 91久久久久久久一区二区 | 丁香久久久 | 99热这里只有精品国产首页 | 精品视频免费观看 | 丁香婷婷久久 | 久久艹国产 | 亚洲伦理中文字幕 | 欧美在线资源 | 色综合久久精品 | 国产在线观看一 | 日韩四虎 | 国产精品门事件 | wwxxxx日本| 玖玖色在线观看 | 国产精品一区二区 91 | 国产精品成人在线 | 99久久超碰中文字幕伊人 | 成 人 黄 色视频免费播放 | 国产精久久 | 中文字幕一区二区三区四区在线视频 | 欧美日韩一区二区三区在线免费观看 | 2022中文字幕在线观看 | 精品一区二区三区四区在线 | 中文字幕在线影视资源 | 亚洲成人av片在线观看 | 亚洲精品资源 | 亚洲在线国产 | 国产最新91 | 国产v欧美 | 国产在线一卡 | 成人午夜电影久久影院 | 天天干天天插 | 在线激情小视频 | 婷婷九月激情 | 天堂网一区二区 | 国产高清免费观看 | 精品乱码一区二区三四区 | 深夜男人影院 | av色一区 | 黄色成人影院 | 欧美日韩一区二区三区视频 | 日韩欧美99 | 欧美在线一 | 99这里都是精品 | 在线国产视频观看 | 91久久国产自产拍夜夜嗨 | 国产成人在线观看 | 国产成人精品999 | 久久久久欠精品国产毛片国产毛生 | www.色的| 欧美日韩大片在线观看 | 国产第一页在线播放 | 99久久久国产精品美女 | 久久五月情影视 | 国产夫妻自拍av | 日b视频国产 | 蜜臀aⅴ精品一区二区三区 久久视屏网 | 久久久久久久18 | 超碰人人av | 99国产精品一区二区 | 国产综合在线观看视频 | 久久免费视频在线 | 国产高清在线观看av | 成年人视频免费在线播放 | 国产精品久久久久三级 | 国产91亚洲 | 亚洲精品久久久久久久不卡四虎 | 免费日韩在线 | 麻豆一精品传二传媒短视频 | 黄色毛片视频免费观看中文 | 色狠狠综合天天综合综合 | 天天射天天搞 | 成人一级免费视频 | 久久欧洲视频 | 久久久精品国产一区二区电影四季 | 日韩精品视频免费在线观看 | 久久久电影 | 在线观看亚洲a | 久久久精品国产一区二区电影四季 | 在线观看av麻豆 | 久久久久久中文字幕 | 中字幕视频在线永久在线观看免费 | 婷婷在线免费观看 | 成人免费看电影 | 在线观看中文字幕一区二区 | 在线观看片 | 国内精品免费 | 国产成人精品久 | 99精品视频在线观看播放 | 在线观看播放av | 国产 日韩 欧美 自拍 | 婷婷在线视频 | 久久久久久久综合色一本 | 99久久激情视频 | 国产馆在线播放 | 91精品视频网站 | 日韩欧美一区二区三区在线观看 | 午夜99| 亚洲一级免费电影 | 亚洲午夜精品久久久久久久久久久久 | 91精品国产福利在线观看 | 欧美永久视频 | 九九涩涩av台湾日本热热 | 亚洲人成综合 | 久久艹欧美 | 亚洲黄在线观看 | 国产精品夜夜夜一区二区三区尤 | 91精品一区二区三区久久久久久 | 国产小视频免费在线网址 | 国产视频1 | av中文字幕网址 | 欧美小视频在线 | 97超碰.com | 久久久精品网站 | 中文字幕久久精品一区 | 久久亚洲影视 | 美女在线观看av | 日韩丝袜视频 | 国产亚洲资源 | 中国一级片视频 | 成人在线免费av | 精品91视频 | 在线小视频| 天天射天天干天天 | 色在线免费观看 | 天天干com | 黄色动态图xx | 成人一区影院 | 99热99热| 亚洲成av人片在线观看香蕉 | 人人插人人看 | 欧美中文字幕久久 | 国产亚洲视频在线 | 日韩在线免费播放 | 欧美一级视频免费 | 超碰在线观看99 | 午夜精品一区二区三区四区 | 亚洲在线精品 | 在线免费观看麻豆视频 | 久久久久久免费 | 国产99久久久精品 | 一区二区三区视频在线 | 看片的网址 | 久久精品国产一区二区电影 | 免费a级黄色毛片 | 亚洲精品视频在线观看视频 | 精品国产91亚洲一区二区三区www | 久久免费视屏 | 欧美激情一区不卡 | 最近中文字幕高清字幕免费mv | 国产真实在线 | 亚洲精品在线观看网站 | 国产最新在线视频 | 激情综合网在线观看 | 亚洲国产电影在线观看 | 999毛片| 成人蜜桃 | 91精品一区在线观看 | 国产麻豆果冻传媒在线观看 | 久久黄色影视 | 黄色在线观看污 | 亚欧日韩成人h片 | 国产精品2019 | 91久久丝袜国产露脸动漫 | 视频一区二区视频 | 婷婷精品国产一区二区三区日韩 | 婷婷在线免费观看 | 99热超碰在线 | 欧美日韩国产一二 | 久久九九网站 | 国产精品美女久久久久久久久久久 | 久久在视频 | 中文字幕网站 | 91中文字幕在线 | 日韩精品在线免费观看 | 免费成人黄色片 | 九九爱免费视频 | 久久久精品免费观看 | 国产精品九九九九九九 | 日韩精品一区二区三区三炮视频 | 国产精品女人久久久 | 久久国语露脸国产精品电影 | 欧美日韩在线网站 | 美女国产在线 | 五月婷婷在线视频 | 免费看的黄色片 | 中文字幕在线播放日韩 | 久章草在线 | 人九九精品 | 天天插天天干天天操 | 香蕉影院在线 | 亚洲精品免费在线播放 | 国产亚洲在| 亚洲黄色激情小说 | 亚洲精品视频免费观看 | 91精品国产麻豆 | 成年人视频在线免费观看 | 成人一级免费视频 | 日韩中文在线视频 | 久久五月精品 | 黄色一区三区 | 久久久91精品国产一区二区三区 | 国产精成人品免费观看 | 久久综合九色综合97_ 久久久 | 亚洲人成影院在线 | 偷拍福利视频一区二区三区 | 米奇狠狠狠888| 欧美日本不卡视频 | 免费黄色在线网站 | 97人人网| 久久久久福利视频 | 日韩中文字幕国产 | 天堂av网站 | 狠狠插狠狠操 | 精品国产一区二区三区噜噜噜 | 成人性生活大片 | 国产一区二区视频在线 | 欧美日本国产在线观看 | 丁香花中文字幕 | 欧美在线视频一区二区三区 | 91麻豆精品国产91久久久使用方法 | 麻豆91在线观看 | 国内亚洲精品 | 粉嫩av一区二区三区入口 | 成年人黄色av | 久久高清毛片 | 久久久久久久久久伊人 | 亚洲桃花综合 | 三级黄色网络 | 国产不卡在线看 | 国产精品久久久久久久久免费 | av在线小说| 国产91精品一区二区 | 夜夜夜夜猛噜噜噜噜噜初音未来 | 成年人免费在线 | 国产精品久久久久久久久久久杏吧 | 中文字幕日韩高清 | 久久精品一二三区白丝高潮 | a一片一级| 在线观看一区 | 九九热在线视频免费观看 | 午夜精品一区二区三区视频免费看 | 亚洲va欧美 | 久久综合狠狠综合久久激情 | 久久免费看 | 手机看片1042| 久久国产网 | 国产在线观看99 | 久久久这里有精品 | 这里只有精品视频在线 | 亚洲综合精品视频 | 日韩在线精品一区 | 国产一级片免费播放 | 欧美亚洲成人xxx | 中文字幕第一页在线 | 国产精品久久一区二区无卡 | 尤物一区二区三区 | 91综合在线| 日本丶国产丶欧美色综合 | 成人av视屏| 9久久精品 | 国内精品视频在线播放 | 999视频在线播放 | 日韩亚洲国产精品 | 欧美色精品天天在线观看视频 | 国产精品黄色 | 精品在线观看国产 | 欧美日韩国产二区 | 99免费在线视频 | 久久国产99| 一区二区视频电影在线观看 | 天堂在线一区 | 天天综合网 天天综合色 | 久草男人天堂 | 日日操天天操夜夜操 | 国产精品久久久久免费 | 日韩在线免费小视频 | 成人国产精品久久久久久亚洲 | 精品国产亚洲日本 | 成人91在线 | 国产一区高清在线观看 | 亚洲精品乱码久久久久久 | 最近2019中文免费高清视频观看www99 | 日韩免费在线 | 亚洲国产欧美在线看片xxoo | av888av.com| 亚洲九九九在线观看 | 四虎成人精品在永久免费 | 日韩中文字幕亚洲一区二区va在线 | 国产色在线视频 | 狠狠的日 | 国产成人精品久久久久蜜臀 | 精品久久久久久久久久久院品网 | 国产又粗又猛又爽又黄的视频免费 | 97精品欧美91久久久久久 | 成年人在线免费看视频 | 玖玖玖影院| 六月婷婷网| 又污又黄网站 | 国产黄色免费观看 | 亚洲激精日韩激精欧美精品 | 狠狠色丁香婷婷综合久小说久 | 精品国产乱码 | 久久国产精品免费视频 | 日韩高清一区 | 国产精品video爽爽爽爽 | 最新中文字幕在线播放 | 欧美日韩一级久久久久久免费看 | 国产精品亚洲精品 | 久久国产99| 911在线| 久久精品视频在线观看 | 亚洲国产婷婷 | 亚洲欧洲美洲av | 亚洲欧美视频一区二区三区 | 91av视屏 | av电影中文字幕在线观看 | 成年人在线观看网站 | 免费观看久久 | 国产在线更新 | www.综合网.com | 日日草天天草 | 天天综合网天天 | 999电影免费在线观看2020 | 国产精品免费久久久久久久久久中文 | 婷婷 综合 色 | 国产精品久久99综合免费观看尤物 | 最近中文字幕免费 | 伊人日日干 | 日韩av在线高清 | 九九精品视频在线看 | 日本精品视频在线观看 | 五月婷婷久久综合 | 国产最新在线视频 | 色www. | 国产尤物一区二区三区 | 亚洲激情综合 | 91九色蝌蚪国产 | 青青河边草观看完整版高清 | 在线观看视频一区二区三区 | 992tv成人免费看片 | 日日夜夜天天操 | 三级黄色在线观看 | 中文字幕a在线 | 免费网站污 | 三级黄色片子 | 91精品国产成人观看 | 亚洲视频1 | 亚洲精品一区二区三区在线观看 | 黄网站免费久久 | 夜夜爽88888免费视频4848 | 日韩欧美一区二区三区视频 | 亚洲在线精品 | 一区免费观看 | 久久久国产精品电影 | 久久精品99国产国产 | 亚洲资源 | 国产精品资源 | 狂野欧美激情性xxxx | 成人夜晚看av | 亚洲综合黄色 | 综合影视 | 国产在线免费 | 91精品啪在线观看国产81旧版 | 国产精品欧美久久久久久 | 久久99网 | 韩国视频一区二区三区 | 久色 网 | 国产色在线视频 | 天堂资源在线观看视频 | 日韩黄在线观看 | 999久久久免费精品国产 | 三级动图| 欧美激情视频一区二区三区免费 | 2024av| 欧美日韩3p | 二区三区在线 | 国产一二三四在线观看视频 | 日韩欧美在线综合网 | 成人av网站在线 | 玖玖爱免费视频 | 极品久久久久久久 | 在线观看一级视频 | 精品一区久久 | 99久久精品久久亚洲精品 | 人人爽人人做 | 在线视频电影 | 成人 亚洲 欧美 | 色狠狠一区二区 | 欧美一区二区三区在线播放 | 99在线观看精品 | 日韩在线视频二区 | 婷久久| 视频高清 | 91看片成人 | 亚洲欧美日韩国产 | 黄色网www | 成人污视频在线观看 | 在线国产精品视频 | 成人在线观看av | 黄色国产高清 | 亚洲电影影音先锋 | 97超碰免费在线观看 | 久久亚洲精品国产亚洲老地址 | 国产一级二级在线 | 久久久高清视频 | 久久99亚洲精品 | 少妇bbb | 曰韩精品| 2023年中文无字幕文字 | 欧美日韩中文在线 | 亚洲综合成人在线 | 日本精品一区二区三区在线观看 | 久久成人精品电影 | 九九九热精品免费视频观看 | 欧美日韩中文国产 | 中文字幕在线视频一区 | 男女啪啪免费网站 | 开心色停停 | 不卡国产视频 | 久久五月婷婷丁香 | 日韩精品中文字幕在线 | 久久99亚洲网美利坚合众国 | 一区二区中文字幕在线播放 | 国产91丝袜在线播放动漫 | 午夜18视频在线观看 | 久久久久免费网站 | 久久超碰97 | 91丨porny丨九色| 免费看日韩片 | 欧美久久99 | 天天色视频 | 日韩高清免费电影 | 国产精品96久久久久久吹潮 | 欧美极品少妇xxxx | 国内一级片在线观看 | 国产精品岛国久久久久久久久红粉 | 国产99久久久精品视频 | 国产成人亚洲在线观看 | 蜜桃av久久久亚洲精品 | 久久夜靖品 | 草久热 | 亚洲国产日韩一区 | 91成人破解版 | 久久久五月天 | 天天综合久久综合 | 麻豆视频网址 | 久久国产亚洲精品 | 久久久久免费网 | 成年人在线电影 | 91麻豆精品国产91久久久久 | 伊人电影在线观看 | 久久久久观看 | 27xxoo无遮挡动态视频 | 欧美日韩一区二区在线观看 | 四虎伊人 | 久久亚洲欧美日韩精品专区 | 一区二区三区在线观看中文字幕 | 日韩理论在线视频 | 波多野结衣电影一区二区三区 | 黄色在线观看免费 | 亚洲欧美精品一区二区 | 中文字幕丝袜制服 | 黄p网站在线观看 | 亚洲成a人片77777kkkk1在线观看 | 久久久久国产成人精品亚洲午夜 | 国产午夜精品在线 | 亚洲人在线 | 视频国产区 | 国产精品久久久久久爽爽爽 | 91久久精品一区 | 三级大片网站 | 激情视频网页 | 国产特级毛片aaaaaa高清 | 国产精品综合久久久 | 黄色国产在线 | 久久免费电影网 | 98超碰在线观看 | 91丨九色丨蝌蚪丨对白 | 91大神电影 | 国产精品99久久久久久宅男 | 黄色三级av| 久久综合色8888 | 免费在线观看日韩视频 | 天天色官网| 97成人免费 | 免费a视频在线观看 | 亚洲一区二区三区91 | 97在线公开视频 | 91理论片午午伦夜理片久久 | 色美女在线 | 午夜男人影院 | 国产精品色视频 | 在线观看视频一区二区三区 | 欧美黄在线 | www狠狠操| 黄色影院在线免费观看 | 午夜12点 | 天天摸夜夜操 | 色网站国产精品 | 久草五月 | 在线之家官网 | 四虎国产精 | 久久这里只有精品首页 | 欧美另类一二三四区 | 欧美激情综合色 | 日韩精品一区二区三区丰满 | 成人app在线播放 | 五月宗合网| 黄色在线观看www | 欧美激情xxxx | 免费在线观看一级片 | 天天操夜夜操国产精品 | 91精品秘密在线观看 | 欧美少妇xxxxxx | 麻豆精品国产传媒 | www蜜桃视频 | 欧美精品在线免费 | 超碰在线观看97 | 中文字幕中文字幕在线中文字幕三区 | 久久亚洲私人国产精品va | 天天爱天天草 | 三日本三级少妇三级99 | 最新av免费在线观看 | 五月婷视频| 免费在线观看av不卡 | 国产视频一区在线免费观看 | 国产一级做a | 91中文字幕在线视频 | 免费在线日韩 | 亚洲国产精品500在线观看 | 又色又爽又激情的59视频 | 成人三级视频 | 欧美日韩久久久 | 国产小视频你懂的 | 精品久久美女 | 午夜在线免费视频 | 国产成人精品一区二区三区福利 | 日b视频在线观看网址 | 91黄在线看 | 91手机电视| 一区二区不卡 | 五月婷综合 | 久久精品成人欧美大片古装 | 亚洲欧美激情精品一区二区 | 中文字幕免费国产精品 | 91热精品 | 九九激情视频 | 日日夜夜噜噜噜 | 亚洲jizzjizz日本少妇 | 国产美女精品在线 | 亚洲资源在线网 | 黄色小网站免费看 | 国产精品 久久 | 国产精品丝袜 | 久久国产精品精品国产色婷婷 | 最近免费观看的电影完整版 | 亚洲天堂网在线播放 | 日本久久久久久久久久久 | 精品久久久久久一区二区里番 | 精品美女久久久久 | 精品自拍网 | 国产精品亚洲片夜色在线 | 狠狠操在线 | 性色av免费在线观看 | 婷婷色在线播放 | 欧美调教网站 | 99视频精品全部免费 在线 | 波多野结衣在线观看一区 | 97在线影院 | 国产 欧美 在线 | 伊人天天狠天天添日日拍 | 国产亚洲综合精品 | 欧美精品久久久久久 | 九九久久精品 | 国产高清免费视频 | 日韩视频免费 | 国产精品高潮久久av | 亚洲 成人 一区 | 韩国在线一区二区 | 不卡视频国产 | 91在线中文字幕 | 国产精品日韩久久久久 | www.99在线观看| 国产成人精品久久久 | 日日干夜夜操视频 | 国产精品99久久久久久久久 | 91av视频免费观看 | 午夜在线免费观看视频 | 91在线观看视频网站 | 国产美女无遮挡永久免费 | 97视频网站 | 免费网站看av片 | 精品理论片| 91亚洲精品久久久 | 亚洲欧美日本A∨在线观看 青青河边草观看完整版高清 | 中文在线免费观看 | 精品国产视频在线 | 91香蕉国产| 日韩字幕 | 中文字幕在线观看91 | 日p在线观看 | 亚洲另类在线视频 | 成人国产一区二区 | 香蕉免费在线 | 亚洲精品视频在线观看免费视频 | 99爱精品视频 | av导航福利| 成人动态视频 | 成人免费观看a | 精品视频久久久 | 99视频在线看| 亚洲人成人99网站 | 激情五月激情综合网 | 丁香九月激情综合 | 成人国产精品av | 亚洲精品乱码久久久一二三 | 狠狠的操狠狠的干 | 精品久久久久久亚洲综合网站 | 久久久久久久久久久久国产精品 | 成人在线免费观看视视频 | 天天综合区 | 亚洲免费资源 | 色播六月天 | 欧美久久久久久久久久 | 免费精品视频在线观看 | www.狠狠插.com| 四虎影视国产精品免费久久 | 国产精品网在线观看 | 高清精品久久 | 五月婷婷国产 | 国产韩国精品一区二区三区 | 国产成人精品一区二三区 | 日韩中文字幕亚洲一区二区va在线 | 午夜电影av | 日韩高清免费在线 | 国产精品久久久 | 日本精品二区 | 国产在线 一区二区三区 | 久久图| 手机av电影在线观看 | 久久免费一 | 伊人www22综合色 | 亚洲国产精品视频在线观看 | 中文av资源站| 国产亚洲精品福利 | 国产一区二区影院 | 国产色网站 | 成人国产精品一区二区 | 亚洲最大在线视频 | 国产91精品一区二区麻豆亚洲 | 成人久久久久久久久久 | 久久区二区| 精品国产亚洲日本 | 91精品免费在线视频 | 久久精品99久久久久久2456 | 免费人成在线观看网站 | 99色人| 麻豆精品在线 | av视屏在线 | 久久久综合电影 | 在线高清一区 | 久久久毛片 | 亚洲精品黄网站 | 欧美成人91 | 麻豆影视在线观看 | 国产一级在线观看视频 | www..com黄色片 | 精品久久1 | 亚洲精品网址在线观看 | 青青河边草免费观看完整版高清 | 午夜12点 | 中国一区二区视频 | 日本中文字幕久久 | 午夜影视剧场 | 天天天干夜夜夜操 | 麻豆91精品91久久久 | 91精品网站在线观看 | 国产精品久久久久三级 | 亚洲一一在线 | 一区二区三区免费在线观看视频 | 亚洲综合一区二区精品导航 | 欧美一区二区伦理片 | 色在线高清 | 97国产电影 | 久久影院亚洲 | 欧美日韩一级视频 | 在线天堂日本 | 久99久精品视频免费观看 | 91日韩精品视频 | 日韩中文字幕a | 密桃av在线| av在线直接看 | 欧美日韩国产一区二区三区 | 特级黄色视频毛片 | 91传媒免费观看 | 国产成人精品av在线 | 欧美91av| 精品久久久久久国产 | 日韩欧美极品 | 亚洲免费在线播放视频 | 亚洲国产理论片 | 天天射射天天 | 欧美精品一区二区三区四区在线 | 欧美成人精品三级在线观看播放 | 东方av在线免费观看 | 精品国精品自拍自在线 | 日韩中文字幕免费 | 网站在线观看你们懂的 | 中午字幕在线 | 精品久久久久久亚洲综合网站 | 色av色av色av| 免费在线电影网址大全 | 免费看色的网站 | 97视频人人免费看 | 中文字幕高清有码 | 黄色三级av | 欧美一区日韩精品 | 日韩欧美在线视频一区二区 | 亚洲三级黄色 | 91亚洲精品久久久 | 视频福利在线观看 | 国产免费av一区二区三区 | 成人精品99| 在线观看成人小视频 | 人人精品久久 | 久久99国产精品久久99 | 黄色片视频在线观看 | 人人爽人人爽人人片av | 久久久久国产精品一区二区 | 日韩中文字幕视频在线 | 国产99久久久精品视频 | 婷婷精品国产一区二区三区日韩 | 色99久久 | 麻豆果冻剧传媒在线播放 | 国产xvideos免费视频播放 | 5月丁香婷婷综合 | 欧美一区二区免费在线观看 | 操一草 | 免费在线观看的av网站 | 色综合天天天天做夜夜夜夜做 | 欧美亚洲精品一区 | 狠狠的干狠狠的操 | 欧美在线观看视频免费 | 黄色大全在线观看 | 99热高清 | 国产青青青 | 看片网站黄色 | 最新久久免费视频 | 中文字幕一区二区三区精华液 | 国产精品一区二区你懂的 | 国产不卡在线 |