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

使用鴻蒙Hi3861完成連接WiFi熱點并啟動TCPSocketServ

系統
這次使用Hi3861來完成Wifi熱點的連接,并啟動TCP SocketServer,接收消息并將消息反饋TcpCLient。

[[380071]]

 想了解更多內容,請訪問:

51CTO和華為官方合作共建的鴻蒙技術社區

https://harmonyos.51cto.com/#zz

這次使用Hi3861來完成Wifi熱點的連接,并啟動TCP SocketServer,接收消息并將消息反饋TcpCLient。

一、連接Wifi熱點。主要做法是啟動開發板Wifi,然后設置熱點和密碼等配置信息,再連接熱點。

1、先定義兩個Wifi監聽器,一個連接改變、一個狀態改變,并注冊監聽器。其中重要的是OnWifiConnectionChanged連接狀態事件處理函數。該函數會在連接成功后設置全局變量g_connected=1,代表已經連接成功。

  1. WifiEvent eventListener = { 
  2.   .OnWifiConnectionChanged = OnWifiConnectionChanged, 
  3.   .OnWifiScanStateChanged = OnWifiScanStateChanged 
  4. }; 
  5. WifiErrorCode errCode = RegisterWifiEvent(&eventListener); 
  6.  
  7. void OnWifiConnectionChanged(int state, WifiLinkedInfo* info) { 
  8.   if (!info) return
  9.  
  10.   if (state == WIFI_STATE_AVALIABLE) { 
  11.     g_connected = 1; 
  12.   } else { 
  13.     g_connected = 0; 
  14.   } 

 2、啟動Wifi

  1. EnableWifi(); 

3、設置Wifi熱點信息,并返回NetworkId

  1. WifiDeviceConfig apConfig = {}; 
  2. strcpy(apConfig.ssid, "MyWifi"); 
  3. strcpy(apConfig.preSharedKey, "12345678"); 
  4. apConfig.securityType = WIFI_SEC_TYPE_PSK; 
  5.  
  6. int netId = -1; 
  7. AddDeviceConfig(&apConfig, &netId); 

 4、連接熱點,注意此時的g_connected變量,true代表已連接,false代表未連接。這個狀態在事件處理函數中設置。未連接成功時,系統會循環等待,知道事件設置該值。

  1. ConnectTo(netId); 
  2. while (!g_connected) { 
  3.   osDelay(10); 

 二、進行聯網,找到wlan0的network interface,然后啟動DHCP客戶端,獲取IP地址。

  1. struct netif* iface = netifapi_netif_find("wlan0"); 
  2. if (iface) { 
  3.   err_t ret = netifapi_dhcp_start(iface); 
  4.   osDelay(300); 

 三、啟動TcpSocketServer,并收發消息

1、創建SocketServer,設置服務端口,并啟動監聽

  1. int sockfd = socket(AF_INET, SOCK_STREAM, 0); 
  2.  
  3. struct sockaddr_in serverAddr = {0}; 
  4. serverAddr.sin_family = AF_INET; 
  5. serverAddr.sin_port = htons(port); 
  6. serverAddr.sin_addr.s_addr = htonl(INADDR_ANY); 
  7. bind(sockfd, (struct sockaddr *)&serverAddr, sizeof(serverAddr)); 
  8.  
  9. int backlog = 1; 
  10. listen(sockfd, backlog) 

 2、客戶端連接。接收客戶端消息并發送回去。注意連接后,會創建一個新的Socket File Description。

  1. int connfd = -1; 
  2. connfd = accept(sockfd, (struct sockaddr *)&clientAddr, &clientAddrLen); 
  3.  
  4. recv(connfd, request, sizeof(request), 0); 
  5. send(connfd, request, strlen(request), 0); 

 3、關閉TcpSocketServer

  1. lwip_close(connfd); 
  2. lwip_close(socketfd); 

 四、聯網結束,關閉DHCP客戶端,斷開Wifi,移除熱點的配置信息,禁用Wifi。

  1. err_t ret = netifapi_dhcp_stop(iface); 
  2. Disconnect(); 
  3. RemoveDevice(netId); 
  4. DisableWifi(); 

 五、測試情況如下:

1、啟動開發板,連接Wifi熱點,啟動TcpServer

2、TcpClient(網絡調試助手)連接開發板的TcpServer(HiBurn)。

3、TcpClient輸入數據并發送,TcpServer接收后再發送回TcpClient。


六、全部源代碼,我都注釋了,希望大家能夠有所參考。

  1. #include <errno.h> 
  2. #include <stdio.h> 
  3. #include <string.h> 
  4. #include <stddef.h> 
  5. #include <unistd.h> 
  6.  
  7. #include "ohos_init.h" 
  8. #include "cmsis_os2.h" 
  9. #include "wifi_device.h" 
  10.  
  11. #include "lwip/netifapi.h" 
  12. #include "lwip/api_shell.h" 
  13. #include "lwip/sockets.h" 
  14.  
  15. // 接收、發送的數據 
  16. static char request[128] = ""
  17. // 未連接熱點=0,已連接熱點=1 
  18. static int g_connected = 0; 
  19.  
  20. // 輸出連接信息字符串 
  21. // 打印內容樣例--> bssid: 38:47:BC:49:01:FA, rssi: 0, connState: 0, reason: 0, ssid: MyMobile 
  22. void PrintLinkedInfo(WifiLinkedInfo* info) { 
  23.   if (!info) return
  24.  
  25.   static char macAddress[32] = {0}; 
  26.   unsigned char* mac = info->bssid; 
  27.   snprintf(macAddress, sizeof(macAddress), "%02X:%02X:%02X:%02X:%02X:%02X", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]); 
  28.   printf("bssid: %s, rssi: %d, connState: %d, reason: %d, ssid: %srn", macAddress, info->rssi, info->connState, info->disconnectedReason, info->ssid); 
  29.  
  30. // 連接狀態改變事件處理 
  31. void OnWifiConnectionChanged(int state, WifiLinkedInfo* info) { 
  32.   if (!info) return
  33.  
  34.   // 輸出類似內容:OnWifiConnectionChanged 31, state = 1, info =  
  35.   printf("%s %d, state = %d, info = rn", __FUNCTION__, __LINE__, state); 
  36.   PrintLinkedInfo(info); 
  37.  
  38.   // 根據連接狀態設置g_connected 
  39.   if (state == WIFI_STATE_AVALIABLE) { 
  40.     g_connected = 1; 
  41.   } else { 
  42.     g_connected = 0; 
  43.   } 
  44.  
  45. // 掃描狀態改變事件處理 
  46. void OnWifiScanStateChanged(int state, int size) { 
  47.   printf("%s %d, state = %X, size = %drn", __FUNCTION__, __LINE__, state, size); 
  48.  
  49. void DisconnectTcpSocket(int connfd) { 
  50.   sleep(1); 
  51.   printf("do_disconnect...rn"); 
  52.   lwip_close(connfd); 
  53.   sleep(1); // for debug 
  54.  
  55. void CloseTcpSocket(int socketfd) { 
  56.   printf("do_cleanup...rn"); 
  57.  
  58.   lwip_close(socketfd); 
  59.  
  60. static void TcpServerHandler(void) { 
  61.   ssize_t retval = 0; 
  62.   unsigned short port = 9118; 
  63.  
  64.   // 創建一個通信的Socket,并返回一個Socket文件描述符。第一個參數IpV4,第二個參數SOCK_STREAM類型,第三個指用到的協議 
  65.   int sockfd = socket(AF_INET, SOCK_STREAM, 0); 
  66.  
  67.   // 客戶端地址和地址長度 
  68.   struct sockaddr_in clientAddr = {0}; 
  69.   socklen_t clientAddrLen = sizeof(clientAddr); 
  70.  
  71.   // 服務端地址 
  72.   struct sockaddr_in serverAddr = {0}; 
  73.   serverAddr.sin_family = AF_INET; 
  74.   // htons是將整型變量從主機字節順序轉變成網絡字節順序,就是整數在地址空間存儲方式變為高位字節存放在內存的低地址處 
  75.   serverAddr.sin_port = htons(port); 
  76.   // 監聽本機的所有IP地址,INADDR_ANY=0x0 
  77.   // 將主機數轉換成無符號長整型的網絡字節順序 
  78.   serverAddr.sin_addr.s_addr = htonl(INADDR_ANY); 
  79.  
  80.   // 服務端綁定端口 
  81.   retval = bind(sockfd, (struct sockaddr *)&serverAddr, sizeof(serverAddr)); 
  82.   if (retval < 0) { 
  83.     printf("bind failed, %ld!rn", retval); 
  84.     CloseTcpSocket(sockfd); 
  85.     return
  86.   } 
  87.   printf("bind to port %d success!rn", port); 
  88.  
  89.   // 開始監聽,backlog指Pending連接隊列增長到的最大長度。隊列滿了,再有新連接請求到達,則客戶端ECONNREFUSED錯誤。如果支持重傳,則請求忽略。 
  90.   int backlog = 1; 
  91.   retval = listen(sockfd, backlog); 
  92.   if (retval < 0) { 
  93.     printf("listen failed!rn"); 
  94.     CloseTcpSocket(sockfd); 
  95.     return
  96.   } 
  97.   printf("listen with %d backlog success!rn", backlog); 
  98.  
  99.   int outerFlag = 1; 
  100.   while (outerFlag) { 
  101.     // 接受客戶端連接,成功會返回一個表示連接的 socket。clientAddr參數將會攜帶客戶端主機和端口信息;失敗返回 -1 
  102.     // 從Pending連接隊列中獲取第一個連接,根據sockfd的socket協議、地址族等內容創建一個新的socket文件描述,并返回。 
  103.     // 此后的 收、發 都在 表示連接的 socket 上進行;之后 sockfd 依然可以繼續接受其他客戶端的連接, 
  104.     // UNIX系統上經典的并發模型是“每個連接一個進程”——創建子進程處理連接,父進程繼續接受其他客戶端的連接 
  105.     // 鴻蒙liteos-a內核之上,可以使用UNIX的“每個連接一個進程”的并發模型liteos-m內核之上,可以使用“每個連接一個線程”的并發模型 
  106.     int connfd = -1; 
  107.     connfd = accept(sockfd, (struct sockaddr *)&clientAddr, &clientAddrLen); 
  108.     if (connfd < 0) { 
  109.       printf("accept failed, %d, %drn", connfd, errno); 
  110.       CloseTcpSocket(sockfd); 
  111.       outerFlag = 0; 
  112.     } 
  113.     printf("accept success, connfd = %d !rn", connfd); 
  114.     // inet_ntoa:網絡地址轉換成“.”點隔的字符串格式。ntohs:16位數由網絡字節順序轉換為主機字節順序。 
  115.     printf("client addr info: host = %s, port = %drn", inet_ntoa(clientAddr.sin_addr), ntohs(clientAddr.sin_port)); 
  116.  
  117.     int innerFlag = 1; 
  118.     // 接收消息,然后發送回去 
  119.     while (innerFlag) { 
  120.       // 后續 收、發 都在 表示連接的 socket 上進行; 
  121.       // 在新的Socket文件描述上接收信息. 
  122.       retval = recv(connfd, request, sizeof(request), 0); 
  123.       if (retval < 0) { 
  124.         printf("recv request failed, %ld!rn", retval); 
  125.         innerFlag = 0; 
  126.       } else if (retval == 0) { 
  127.         // 對方主動斷開連接 
  128.         printf("client disconnected!rn"); 
  129.         innerFlag = 0; 
  130.       } else { 
  131.         printf("recv request{%s} from client done!rn", request); 
  132.  
  133.         // 發送數據 
  134.         retval = send(connfd, request, strlen(request), 0); 
  135.         if (retval <= 0) { 
  136.           printf("send response failed, %ld!rn", retval); 
  137.           innerFlag = 0; 
  138.         } 
  139.         printf("send response{%s} to client done!rn", request); 
  140.  
  141.         // 清空緩沖區 
  142.         memset(&request, 0, sizeof(request)); 
  143.     } 
  144.  
  145.     DisconnectTcpSocket(connfd); 
  146.  
  147.     outerFlag = 0; 
  148.   } 
  149.  
  150.   CloseTcpSocket(sockfd); 
  151.  
  152. static void TcpServerTask(void *arg) { 
  153.   (void)arg; 
  154.    
  155.   // 先定義兩個Wifi監聽器,一個連接改變、一個狀態改變 
  156.   WifiEvent eventListener = { 
  157.     .OnWifiConnectionChanged = OnWifiConnectionChanged, 
  158.     .OnWifiScanStateChanged = OnWifiScanStateChanged 
  159.   }; 
  160.  
  161.   // 等待10個系統Ticks。每個ticks多少個us,計算方式= 1000 * 1000 / osKernelGetTickFreq() 
  162.   osDelay(10); 
  163.  
  164.   // 注冊監聽器 
  165.   WifiErrorCode errCode = RegisterWifiEvent(&eventListener); 
  166.   printf("RegisterWifiEvent: %drn", errCode); 
  167.  
  168.   // 設置Wifi熱點信息 
  169.   WifiDeviceConfig apConfig = {}; 
  170.   strcpy(apConfig.ssid, "MyMobile"); 
  171.   strcpy(apConfig.preSharedKey, "12345678"); 
  172.   apConfig.securityType = WIFI_SEC_TYPE_PSK; 
  173.  
  174.   int netId = -1; 
  175.  
  176.   // 啟用Wifi 
  177.   errCode = EnableWifi(); 
  178.   printf("EnableWifi: %drn", errCode); 
  179.   osDelay(10); 
  180.  
  181.   // 設置Wifi熱點配置信息,返回生成的網絡Id-netId。 
  182.   errCode = AddDeviceConfig(&apConfig, &netId); 
  183.   printf("AddDeviceConfig: %drn", errCode); 
  184.  
  185.   // 根據網絡Id連接到Wifi熱點 
  186.   g_connected = 0; 
  187.   errCode = ConnectTo(netId); 
  188.   printf("ConnectTo(%d): %drn", netId, errCode); 
  189.   // 未連接完成,則一直等待。g_connected狀態會在事件中設置。 
  190.   while (!g_connected) { 
  191.     osDelay(10); 
  192.   } 
  193.   printf("g_connected: %drn", g_connected); 
  194.   osDelay(50); 
  195.  
  196.   // 聯網業務開始,找到netifname=wlan0的netif。 
  197.   struct netif* iface = netifapi_netif_find("wlan0"); 
  198.   if (iface) { 
  199.     // 啟動DHCP客戶端,獲取IP地址 
  200.     err_t ret = netifapi_dhcp_start(iface); 
  201.     printf("netifapi_dhcp_start: %drn", ret); 
  202.     // 等待DHCP服務器反饋給予地址 
  203.     osDelay(300); 
  204.     // 執行線程安全的網絡方法,第二個參數是voidFunc,第三個參數是errFunc。如果沒有errFunc,那么就執行voidFunc。 
  205.     // netifapi_dhcp_start/netifapi_dhcp_stop等都是調用的netifapi_netif_common方法。 
  206.     // dhcp_clients_info_show顯示信息 
  207.     /* 
  208.     server : 
  209.       server_id : 192.168.43.1 
  210.       mask : 255.255.255.0, 1 
  211.       gw : 192.168.43.1 
  212.       T0 : 3600 
  213.       T1 : 1800 
  214.       T2 : 3150 
  215.     clients <1> : 
  216.       mac_idx mac             addr            state   lease   tries   rto      
  217.       0       b4c9b9af69f8    192.168.43.56   10      0       1       2       
  218.     */ 
  219.     ret = netifapi_netif_common(iface, dhcp_clients_info_show, NULL); 
  220.     printf("netifapi_netif_common: %drn", ret); 
  221.   } 
  222.  
  223.   TcpServerHandler(); 
  224.  
  225.   // 聯網業務結束,斷開DHCP 
  226.   err_t ret = netifapi_dhcp_stop(iface); 
  227.   printf("netifapi_dhcp_stop: %drn", ret); 
  228.  
  229.   // 斷開Wifi熱點連接 
  230.   Disconnect(); 
  231.  
  232.   // 移除Wifi熱點的配置 
  233.   RemoveDevice(netId); 
  234.  
  235.   // 關閉Wifi 
  236.   errCode = DisableWifi(); 
  237.   printf("DisableWifi: %drn", errCode); 
  238.   osDelay(200); 
  239.  
  240. static void TcpServerEntry(void) { 
  241.   osThreadAttr_t attr; 
  242.  
  243.   attr.name = "TcpServerTask"
  244.   attr.attr_bits = 0U; 
  245.   attr.cb_mem = NULL
  246.   attr.cb_size = 0U; 
  247.   attr.stack_mem = NULL
  248.   attr.stack_size = 10240; 
  249.   attr.priority = osPriorityNormal; 
  250.  
  251.   if (osThreadNew((osThreadFunc_t)TcpServerTask, NULL, &attr) == NULL) { 
  252.     printf("SunLaoTest-Fail Create"); 
  253.   } 
  254.  
  255. APP_FEATURE_INIT(TcpServerEntry); 

想了解更多內容,請訪問:

51CTO和華為官方合作共建的鴻蒙技術社區

https://harmonyos.51cto.com/#zz

 

責任編輯:jianghua 來源: 鴻蒙社區
相關推薦

2020-10-16 09:50:37

Hi3861WiFi熱點

2020-11-02 11:56:57

鴻蒙 WiFi操作

2022-09-06 15:25:22

Wifi設備開發

2021-04-30 09:43:27

鴻蒙HarmonyOS應用

2020-11-03 11:39:22

wifi小車

2022-02-09 19:31:41

Hi3861OpenHarmon鴻蒙

2022-02-09 19:25:49

Hi3861WiFi操作鴻蒙

2020-10-30 09:41:44

鴻蒙Hi3861WiFi小車

2022-09-07 15:35:49

設備開發鴻蒙

2020-11-06 10:15:16

HiBurn

2020-10-14 09:37:03

HiBurn鴻蒙.bin文件

2020-11-02 12:07:11

鴻蒙 GPIO

2020-10-12 09:36:04

鴻蒙

2021-09-30 10:11:05

鴻蒙HarmonyOS應用

2021-03-16 09:49:16

鴻蒙HarmonyOS應用

2023-05-26 16:07:14

Hi3861Wifi模塊

2022-03-15 15:00:59

Hi3861Pin接口鴻蒙

2021-04-29 09:52:25

鴻蒙HarmonyOS應用

2020-11-18 11:56:06

鴻蒙Hi3861

2022-08-19 10:54:47

操作系統鴻蒙
點贊
收藏

51CTO技術棧公眾號

欧美片一区二区| 男女视频在线观看网站| 国产美女视频一区二区三区| 男人的天堂久久精品| 久久中文字幕在线| 草草地址线路①屁屁影院成人| 天然素人一区二区视频| 一卡二卡欧美日韩| 日本视频一区在线观看| 精品国产伦一区二区三| 美女国产精品| 欧美巨乳美女视频| 国产毛片久久久久久久| 一区二区三区视频播放| 色8久久人人97超碰香蕉987| 桥本有菜av在线| 欧洲一级在线观看| 国产成人av一区二区三区在线| 国产精品扒开腿做爽爽爽男男| 久久中文免费视频| 波多野结衣在线播放一区| 精品国产一区二区三区久久久蜜月| 五月天婷婷激情视频| 国产经典三级在线| 亚洲女人小视频在线观看| 日本一区二区三区精品视频| 亚洲第一色网站| 久久er精品视频| 国产成人黄色av| 日韩伦人妻无码| 欧美一区91| 精品国产欧美一区二区五十路| 欧美成人午夜精品免费| eeuss鲁片一区二区三区| 欧美日韩成人高清| 99久久激情视频| 性国裸体高清亚洲| 午夜av区久久| 欧美亚洲黄色片| 高潮毛片在线观看| 国产精品美女一区二区| 欧美日韩在线精品| 秋霞av在线| 91蝌蚪porny九色| 国产一区二区黄色| 精品国产区一区二| 国产一区二区三区免费观看| 国产精品亚洲аv天堂网| 日韩一级在线视频| 另类亚洲自拍| 日韩免费观看视频| 伊人久久久久久久久久久久| 国产亚洲精品v| 国产91精品不卡视频| 国产成人精品a视频一区| 国产真实久久| 久久久久久久久久婷婷| 久久综合成人网| 最新日韩在线| 欧美一级视频一区二区| 国产成人精品网| 久久亚洲欧洲| 国产精品揄拍500视频| 精品国产青草久久久久96| 美女精品一区二区| 成人在线视频网| 国内精品久久久久久久久久久 | 国产欧美日韩综合| 亚洲成人av动漫| 成人在线直播| 亚洲va在线va天堂| 国产精品69页| **国产精品| 亚洲第一福利网站| 免费污网站在线观看| 欧美在线免费看视频| 久久天天躁狠狠躁夜夜av| 真实国产乱子伦对白在线| 黄色av一区| 国产99久久精品一区二区永久免费| 波多野结衣一二区| 狠狠色丁香婷综合久久| 国产精成人品localhost| 先锋av资源站| 亚洲国产成人在线| 性做爰过程免费播放| 黑人玩欧美人三根一起进| 欧美日韩亚洲网| 国产福利在线免费| 成人三级av在线| 在线亚洲国产精品网| 欧美日韩精品亚洲精品| 午夜在线视频观看日韩17c| 国产精品视频26uuu| 黑人操亚洲女人| 欧美极品少妇xxxxⅹ高跟鞋 | 成人福利在线观看视频| 亚洲成人激情综合网| 少妇性l交大片| 一区二区三区四区高清视频 | 亚洲精选一区| 欧美一区二区三区免费观看| 精品无码久久久久久久久| 国产日韩欧美一区二区三区在线观看| 国产激情久久久久| 国内精品久久久久久久久久久| 久久久影视传媒| 青青视频免费在线| 国产成人福利夜色影视| 亚洲丁香婷深爱综合| 亚洲熟女少妇一区二区| 9色精品在线| 91色p视频在线| 国产一级在线| 亚洲444eee在线观看| 久久6免费视频| 黄色不卡一区| 97婷婷涩涩精品一区| 99热这里精品| 国产精品嫩草影院av蜜臀| 美女日批免费视频| 超碰成人在线观看| 久久最新资源网| 一级成人免费视频| 久久久精品中文字幕麻豆发布| 日韩精品在线观看av| 9999在线精品视频| 中文字幕日韩有码| 国产一级片免费视频| 99精品视频在线免费观看| 激情六月天婷婷| 国产美女视频一区二区 | 伦理av在线| 91精品国产综合久久久久久久| 99久久精品免费视频| 亚洲一区二区动漫| 极品尤物一区二区三区| 日本伦理一区二区| 91精品国产色综合久久久蜜香臀| 欧美波霸videosex极品| 久久久久久久高潮| 九九九久久久| 欧美gv在线| 亚洲黄色免费三级| 青青操免费在线视频| 成人国产精品免费观看| 国产av国片精品| 久久影院资源站| 色综合久久悠悠| 亚洲av无码专区在线| 亚洲激情av在线| 亚洲性图第一页| 在线观看一区| 精品国产乱码久久久久软件| 老司机深夜福利在线观看| 日韩国产欧美精品在线| 男女啊啊啊视频| 久久免费精品国产久精品久久久久| 男女高潮又爽又黄又无遮挡| 日韩免费电影在线观看| 欧美在线免费看| 国产一级在线| 欧美一区二区国产| 久久精品国产亚洲AV无码麻豆| 成人av网站在线| 农村妇女精品一二区| 不卡在线一区| 91亚洲国产精品| 成年人视频免费在线播放| 亚洲第一色在线| 国产91精品一区| 欧美极品少妇xxxxⅹ高跟鞋| 一级黄色片国产| 在线精品亚洲| 三级三级久久三级久久18| 日韩专区视频| 国内精品久久久久伊人av | 久久伊99综合婷婷久久伊| 激情 小说 亚洲 图片: 伦| 色97色成人| 99精品欧美一区二区三区| 欧美激情20| 日韩在线资源网| 亚洲精品久久久久久久久久| 欧美午夜精品久久久久久久| 国产精品成人在线视频| 国产黑丝在线一区二区三区| 欧美大片免费看| 成人久久精品人妻一区二区三区| 欧美性猛交xxxx免费看漫画| 成人18视频免费69| 99久久精品国产一区二区三区| 手机在线免费观看毛片| 欧美日韩在线大尺度| 女女同性女同一区二区三区91| 91久久青草| 欧美有码在线观看视频| 黄网页在线观看| 亚洲女同性videos| 精品区在线观看| 欧洲生活片亚洲生活在线观看| 欧美性猛交xxxxx少妇| 久久免费视频一区| 无码av免费精品一区二区三区| 欧美aaa在线| 成人黄色av片| 欧美区亚洲区| 制服诱惑一区| 精品国产一区二区三区噜噜噜| 99久久免费国| 白嫩亚洲一区二区三区| 国产99久久精品一区二区 夜夜躁日日躁 | 成人激情自拍| 亚洲aa在线观看| 成人做爰视频www网站小优视频| 欧美成人激情视频| 中文日本在线观看| 国产视频精品免费播放| 好吊视频一区二区三区| 欧美一级爆毛片| 一级黄色片在线观看| 色av一区二区| 欧美精品亚洲精品日韩精品| 亚洲一区在线电影| 老司机精品免费视频| 国产午夜亚洲精品午夜鲁丝片| 老司机免费视频| www.成人在线| 国产a级片视频| 国产ts人妖一区二区| 天天操精品视频| 黑人精品欧美一区二区蜜桃| 五月天激情视频在线观看| 欧美中文字幕| 国产熟女高潮视频| 国产亚洲高清视频| 久久久999视频| 国产精品入口| 无码aⅴ精品一区二区三区浪潮 | 日本不卡视频在线播放| 99爱在线视频| 性欧美长视频免费观看不卡| 黄色的视频在线观看| 欧美激情精品久久久久| 91麻豆一二三四在线| 欧美日韩xxxxx| 色yeye免费人成网站在线观看| 欧美成人免费小视频| www.在线视频| 精品中文字幕在线| 超碰在线中文字幕| 97精品国产97久久久久久| av在线不卡免费| 97av视频在线| 国产精品专区免费| 日本在线免费网| 久久国产欧美| 国产日韩一区二区在线| 国产亚洲午夜| 黑人糟蹋人妻hd中文字幕| 欧美一级一区| 日本xxxx黄色| 国产久卡久卡久卡久卡视频精品| 日本黄色www| 不卡av电影在线播放| 黄色在线观看av| 国产三级久久久| 久久av红桃一区二区禁漫| 一区二区三区中文在线| 免费在线观看亚洲| 午夜国产精品影院在线观看| www.国产com| 欧美亚洲综合在线| 国产一区二区女内射| 精品久久久三级丝袜| 五月天丁香视频| 亚洲天堂免费在线| 国产一二区在线| 久久久久久久一区二区三区| 午夜影视一区二区三区| 国产精品爽黄69天堂a| 色播一区二区| 麻豆精品传媒视频| 亚洲精品电影| 国产 福利 在线| 精品一区二区在线看| 大乳护士喂奶hd| 国产精品久久久久影院老司| 麻豆chinese极品少妇| 色又黄又爽网站www久久| 91麻豆成人精品国产免费网站| 欧美videofree性高清杂交| 欧美日韩国产中文字幕在线| 久久九九全国免费精品观看| 免费毛片b在线观看| 国产在线精品自拍| 亚洲精品亚洲人成在线观看| 免费看av软件| 爽好久久久欧美精品| 国产精品99久久久精品无码| 国产欧美日韩精品一区| 久久久久久久久精| 欧美日韩精品欧美日韩精品一| 色婷婷中文字幕| 麻豆一区二区在线观看| 吞精囗交69激情欧美| 国产精品视频在线免费观看 | 国产成人在线中文字幕| 色综合久久久久久久久五月| 亚洲精品1区2区| 一级片黄色免费| 中文字幕精品在线不卡| av黄色在线看| 日韩欧美国产精品一区| 91欧美在线视频| 奇米影视亚洲狠狠色| 在线精品自拍| 国产四区在线观看| 蜜臀91精品一区二区三区| 国产精品嫩草av| 亚洲综合激情另类小说区| 中文字幕一区二区人妻痴汉电车| 日韩精品视频在线| 欧美xxxbbb| 亚洲xxxx18| 亚洲女同中文字幕| 国产福利在线免费| 国产精品理论片在线观看| 69国产精品视频免费观看| 亚洲国产精品小视频| 色屁屁www国产馆在线观看| 亚洲综合第一页| 亚洲欧美在线专区| 亚洲天堂国产视频| 国产精品毛片高清在线完整版| 夜夜爽妓女8888视频免费观看| 精品中文字幕久久久久久| heyzo一区| 国产精品视频在线免费观看| 欧美精品福利| 中文字幕第10页| 亚洲精品福利视频网站| 国产日韩欧美中文字幕| 伦理中文字幕亚洲| 日韩中文字幕在线一区| 无码熟妇人妻av在线电影| 国产成人精品综合在线观看| 少妇影院在线观看| 欧美成人在线直播| av福利在线导航| 九九九久久久| 日本不卡123| 亚洲熟女少妇一区二区| 日韩亚洲欧美在线观看| 色呦呦在线视频| 久久精精品视频| 视频一区视频二区中文| 国产欧美小视频| 91精品国产手机| 多野结衣av一区| 日本10禁啪啪无遮挡免费一区二区| 日韩av电影天堂| 永久av免费网站| 欧美成人video| 中文在线а√天堂| 日韩中文字幕一区| 国模一区二区三区白浆| 久草国产在线视频| 日韩精品极品视频| av成人亚洲| 97精品国产97久久久久久粉红| 国产a精品视频| 亚洲成人第一网站| 俺去亚洲欧洲欧美日韩| 伊人精品久久| www.日本xxxx| 亚洲黄色免费网站| 外国精品视频在线观看| 亚洲天堂免费观看| 成人精品国产亚洲| 成人在线免费观看视频网站| 91在线精品一区二区三区| 日本视频www色| 九色精品免费永久在线| 蜜桃精品wwwmitaows| 热久久久久久久久| 亚洲成av人片在线| av免费在线一区二区三区| 91社区国产高清| 国产精品日本| 欧美三级日本三级| 亚洲人成五月天| 亚洲国产中文在线二区三区免| 黄色动漫在线免费看| 国产精品电影一区二区三区| 亚洲免费视频网| 国产精品视频专区| 亚洲精品1234| 日韩成人毛片视频| 亚洲欧洲在线看|