自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

【鴻蒙開發(fā)實錄】在Hi3861開發(fā)板上發(fā)送一個get請求

開發(fā)
文章由鴻蒙社區(qū)產(chǎn)出,想要了解更多內(nèi)容請前往:51CTO和華為官方戰(zhàn)略合作共建的鴻蒙技術(shù)社區(qū)https://harmonyos.51cto.com/#zz

[[349545]]

想了解更多內(nèi)容,請訪問:

51CTO和華為官方合作共建的鴻蒙技術(shù)社區(qū)

https://harmonyos.51cto.com

由于liteos-m上已經(jīng)移植了lwip(一個小型開源的TCP/IP協(xié)議棧),所以在開發(fā)板上面進(jìn)行網(wǎng)絡(luò)編程相對來說還是比較方便。相關(guān)api可在kernel/網(wǎng)絡(luò).md · OpenHarmony/docs - Gitee.com上查看。

技術(shù)有限,如有錯誤還望不吝賜教。

基礎(chǔ):完成官方的快速入門教程

下載源碼后可以看到在目錄

  1. \\vendor\hisi\hi3861\hi3861\app\demo\src\ 

有許多的例程代碼:

而其中剛好有http客戶端的代碼, 詳見\\vendor\hisi\hi3861\hi3861\app\demo\src\app_http_client.c,而我們只需要將這些代碼按照官方入門教程的開發(fā)方式移植到

  1. \\applications\sample\wifi-iot\app 

(其實官方例程貌似可以不需要更改,但使用的是make/makefile來構(gòu)造編譯,官方教程則是gn/ninja,如果按照官方教程來就只能改代碼了)

1、首先需要讓開發(fā)板連接上網(wǎng)絡(luò),詳細(xì)可參考連志安老師的帖子Hi3861 WiFi操作,熱點連接,或者下載下面的源碼參考

需要注意的是,在連接進(jìn)行完WIFI連接操作后,需要使用sleep一段時間,讓開發(fā)板有足夠的時間連接上網(wǎng)絡(luò)。

  1. int ret; 
  2.    ret = hi_wifi_start_sta(); 
  3.    if(ret == -1) { 
  4.        printf("[Wifi] Connect failed!\n"); 
  5.    } else { 
  6.        printf("[Wifi] Connect sucess!\n"); 
  7.    } 
  8.    sleep(5); 

 2、定義get請求的header以及請求服務(wù)器的IP地址

  1. static const char *g_request = "GET / HTTP/1.1\r\n\ 
  2. Content-Type: application/x-www-form-urlencoded;charset=UTF-8\r\n\ 
  3. Host: baidu.com\r\n\ 
  4. Connectionclose\r\n\ 
  5. \r\n"; 
  6. const char addr_ip[] = "192.168.1.103"

 因為http服務(wù)是我電腦開啟的,所以ip地址是我電腦的局域網(wǎng)ip地址,大家可以直接使用某些公網(wǎng)網(wǎng)站的ip地址進(jìn)行測試,下面會介紹我的測試方式。

創(chuàng)建一個Socket并連接以及寫入請求

  1. struct sockaddr_in addr = {0}; 
  2.    int s, r; 
  3.    char recv_buf[HTTPC_DEMO_RECV_BUFSIZE]; 
  4.    addr.sin_family = AF_INET; 
  5.    addr.sin_port = PP_HTONS(SOCK_TARGET_PORT); 
  6.    addr.sin_addr.s_addr = inet_addr(addr_ip); 
  7.    s = socket(AF_INET, SOCK_STREAM, 0); 
  8.    if (s < 0) { 
  9.        return 1; 
  10.    } 
  11.    printf("... allocated socket"); 
  12.    if (connect(s, (struct sockaddr*)&addr, sizeof(addr)) != 0) { 
  13.        printf("... socket connect failed errno=%d", errno); 
  14.        lwip_close(s); 
  15.        return 1; 
  16.    } 
  17.    printf("... connected"); 
  18.    if (lwip_write(s, g_request, strlen(g_request)) < 0) { 
  19.        lwip_close(s); 
  20.        return 1; 
  21.    } 

 接受獲取到的數(shù)據(jù)并打印 

  1. do { 
  2.       (void)memset_s(recv_buf, sizeof(recv_buf), 0, sizeof(recv_buf)); 
  3.       r = lwip_read(s, recv_buf, sizeof(recv_buf) - 1); 
  4.       for (int i = 0; i < r; i++) { 
  5.           putchar(recv_buf[i]); 
  6.       } 
  7.   } while (r > 0); 

 3、服務(wù)端,我是用的是python建立一個http文件服務(wù)器,很簡單,就在命令行一行代碼

  1. python -m http.server 80 

在電腦上可通過127.0.0.1訪問,開發(fā)板需要和電腦位于同一局域網(wǎng)內(nèi),通過ip地址連接。ip地址可在cmd輸入ipconfig查看(windows)或Linux shell 輸入ifconfig查看(Linux)。也可不用自己建立web服務(wù),訪問一個http協(xié)議網(wǎng)站的ip地址即可(自行百度),注意不能使用域名訪問。

4、結(jié)果

可在命令行看到獲取的數(shù)據(jù)


 在web服務(wù)器端能看到連接的記錄

 


192.168.1.105是開發(fā)板的ip地址

想了解更多內(nèi)容,請訪問:

51CTO和華為官方合作共建的鴻蒙技術(shù)社區(qū)

https://harmonyos.51cto.com

 

責(zé)任編輯:jianghua 來源: 鴻蒙社區(qū)
相關(guān)推薦

2020-10-30 09:48:03

Hi3861開發(fā)板get請求

2020-11-18 11:56:06

鴻蒙Hi3861

2020-12-08 12:36:41

Hi3861 ADC驅(qū)動開發(fā)

2020-10-27 10:08:19

Hi3861ADC驅(qū)動

2020-11-06 10:15:16

HiBurn

2020-10-14 09:37:03

HiBurn鴻蒙.bin文件

2021-06-25 15:32:13

鴻蒙HarmonyOS應(yīng)用

2020-10-30 17:42:36

鴻蒙 OS Hi386

2020-12-15 11:57:49

Hi3861 HarmonyOS開發(fā)板

2021-09-16 10:03:39

鴻蒙HarmonyOS應(yīng)用

2021-12-20 21:01:52

鴻蒙HarmonyOS應(yīng)用

2020-12-17 10:02:16

鴻蒙Hi3861開發(fā)板

2022-08-19 10:54:47

操作系統(tǒng)鴻蒙

2020-12-09 09:44:29

Hi3861硬件介紹鴻蒙開發(fā)板

2020-11-06 11:32:11

NV操作

2023-05-26 16:07:14

Hi3861Wifi模塊

2020-10-29 09:53:06

Hi3861硬件開發(fā)板

2020-11-24 11:41:30

websocket

2021-05-14 15:51:01

鴻蒙HarmonyOS應(yīng)用

2020-12-11 12:45:04

鴻蒙Hi3861游戲
點贊
收藏

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