成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

【開發實錄】在鴻蒙開發板上使用Websocket(移植自librws庫)

系統
文章由鴻蒙社區產出,想要了解更多內容請前往:51CTO和華為官方戰略合作共建的鴻蒙技術社區https://harmonyos.51cto.com/#zz

[[353869]]

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

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

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

 librws: Tiny, cross platform websocket client C library

相關代碼可在下面下載,也可進入librws: 將librws移植到鴻蒙Hi_3861開發板上 (gitee.com)查看

技術有限,如有錯誤還望不吝賜教。

基礎:完成官方的快速入門教程

雖然在web雙向通信中,除了使用ajax(單向輪詢)外,一般都推薦websocket,但網上關于websocket的實現代碼很少,而且大部分為js和java,很少有C語言。因為課程項目開發需要使用到websocket,就在網上尋找了挺久的,終于找到了這個庫。相對于其他庫來說,這個庫需要跨平臺的代碼都用了一層適配層,而且沒有用到其他例如libevent等其他庫,用他的話說就是"No additional dependecies",所以移植挺方便的。然后因為這個庫除了windows平臺外,其他平臺都是使用POSIX接口,而Hi_3861上只有POSIX的聲明,但并沒有實現(詳細可看【開發實錄】在Hi3861開發板上創建線程(三種方式)-鴻蒙HarmonyOS技術社區-官方戰略合作伙伴-51CTO.COM里面有所說明)。所以適配相關的函數以及處理一些小細節。

這篇文章主要介紹如何使用,下一篇可能會介紹如何移植,大家有需求的話,可先學習連志安老師的如何在鴻蒙系統中移植 Paho-MQTT 實現MQTT協議-鴻蒙HarmonyOS技術社區-官方戰略合作伙伴-51CTO.COM文章,這篇文章有挺大的參考價值的。

1、向項目中導入此庫

下載下面的librws資源放至//third_party目錄下,然后在//vendor/hisi/hi3861/hi3861/BUILD.gn文件中的lite_component("sdk")-->deps下添加 "//third_party/librws:librws_static" 這樣就可以在下次編譯時將相關代碼編譯成庫放進項目內了。


2、編寫應用代碼

先使用板子連接上wifi,具體操作可查看Hi3861 WiFi操作,熱點連接-鴻蒙HarmonyOS技術社區-官方戰略合作伙伴-51CTO.COM,需要注意,連接WiFi后要sleep一段時間。下面資源有相關代碼。

然后配置相關信息:

  1. rws_socket _socket = NULL
  2.    _socket = rws_socket_create(); 
  3.     
  4.    rws_socket_set_scheme(_socket, "ws"); 
  5.    rws_socket_set_host(_socket, "192.168.1.103"); 
  6.    rws_socket_set_port(_socket, 7777); 
  7.    rws_socket_set_path(_socket, "/ws"); 

 注意配置信息一定要對應真實信息,下面我會分享我的websocket服務端測試代碼。

然后配置回調函數:

  1. // 因主動或者出現錯誤時,斷開連接的回調函數 
  2. static void on_socket_disconnected(rws_socket socket) { 
  3.     // process error 
  4.     rws_error error = rws_socket_get_error(socket); 
  5.     if (error) {  
  6.         printf("Socket disconnect with code, error: %i, %s\n", rws_error_get_code(error), rws_error_get_description(error));  
  7.     } 
  8.     // forget about this socket object, due to next disconnection sequence 
  9.     socket = NULL
  10.  
  11. // 建立鏈接完成后的回調函數 
  12. static void on_socket_connected(rws_socket socket) { 
  13.     (void) socket; 
  14.     printf("Socket connected\n"); 
  15.  
  16. // 接受到信息的回調函數 
  17. static void on_socket_received_text(rws_socket socket, const char * text, const unsigned int length) { 
  18.     (void) socket; 
  19.     char *buff[128] = {0}; 
  20.     memcpy_s(buff, 128, text, length); 
  21.     printf("Socket text: %s\n", buff); 

  1. // 設置回調函數 
  2.    rws_socket_set_on_disconnected(_socket, &on_socket_disconnected); // required 
  3.    rws_socket_set_on_connected(_socket, &on_socket_connected); 
  4.    rws_socket_set_on_received_text(_socket, &on_socket_received_text); 

 需要注意一個地方,在接受信息回調函數中,原倉庫的測試代碼是直接打印text,但測試發現,text變量除了接受到的信息還會包括一部分亂碼,所以使用了memcpy_s函數復制有效的信息在打印。大家編寫接受回調函數時需要注意這個地方。

接下來就是連接,發送消息以及關閉了。

  1. printf("[RWS]ready to connect\n"); 
  2.  rws_bool res = rws_socket_connect(_socket); 
  3.  if(res == rws_false) { 
  4.      printf("[RWS]error connect\n"); 
  5.      exit(1); 
  6.  } 
  7.  sleep(2); 
  8.  const char * example_text = "hello world"
  9.  printf("[RWS]ready to send msg\n"); 
  10.  rws_socket_send_text(_socket, example_text); 
  11.  sleep(2); 
  12.  printf("[RWS]ready to disconnect\n"); 
  13.  rws_socket_disconnect_and_release(_socket); 
  14.  _socket = NULL
  15.  return

 3、測試代碼

服務器代碼使用的是golang,詳細代碼在下方下載。在代碼文件當前目錄運行命令:

  1. go run server.go 

4、其他文章

【開發實錄】在Hi3861開發板上發送一個get請求

【開發實錄】在Hi3861開發板上創建線程(三種方式)

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

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

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

 

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

2020-10-30 17:12:05

Hi3861

2020-10-30 09:48:03

Hi3861開發板get請求

2022-01-07 21:11:27

鴻蒙HarmonyOS應用

2020-12-29 09:59:01

鴻蒙HarmonyOS智能家居

2020-12-16 10:05:48

鴻蒙開發板Onenet平臺

2022-06-06 10:44:10

C++語言鴻蒙

2020-12-07 12:34:33

開發板鴻蒙hello world

2021-12-16 15:14:54

鴻蒙HarmonyOS應用

2011-06-15 14:19:11

QT 移植

2020-11-17 12:15:36

MQTT開發

2017-09-17 12:21:52

移植Linux系統sqlite3

2020-11-19 10:25:24

MQTT

2020-10-27 10:00:26

鴻蒙開發板物聯網

2020-11-18 11:56:06

鴻蒙Hi3861

2020-12-08 12:36:41

Hi3861 ADC驅動開發

2021-12-29 16:11:11

鴻蒙HarmonyOS應用

2020-10-20 09:32:43

HiSparkWi-FiIoT

2022-04-01 15:54:01

DHCP網絡協議開發板

2021-12-30 16:12:07

鴻蒙HarmonyOS應用

2022-06-28 14:30:29

camera組件照片回傳
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 国产乱码精品1区2区3区 | 四虎影院欧美 | 日韩国产黄色片 | 国产精品毛片一区二区在线看 | 亚洲综合免费 | 久久国产精品久久国产精品 | 日本在线看片 | 精品一区二区电影 | 精品久久久久一区二区国产 | 一区二区三区国产好 | 国产乱肥老妇国产一区二 | 欧美成人a∨高清免费观看 老司机午夜性大片 | 黄色日本片 | 91在线观| 日韩成人在线观看 | 色一级| 中文区中文字幕免费看 | www.日本在线 | 欧美一区二区三区日韩 | 精品免费国产视频 | 国产精品一区二区视频 | 精品久久久久久亚洲综合网 | 毛片网在线观看 | 中文字幕免费在线观看 | 成人一区二区三区在线观看 | 国产精品伦理一区 | 免费在线观看av网站 | 中文字幕亚洲视频 | 中文字幕99 | 亚洲精品一区久久久久久 | 国产乱码精品一区二区三区忘忧草 | 华人黄网站大全 | 一区二区在线 | 久草在线中文888 | 二区中文字幕 | 在线一区 | 久久精品无码一区二区三区 | 久久男人| 午夜国产一区 | 欧美精品久久久久久久久老牛影院 | 羞视频在线观看 |