WebSocket是一種用于在Web瀏覽器和服務器之間進行全雙工通信的協議。WebSocket會在一個瀏覽器和服務器之間建立一條通信管道,允許瀏覽器和服務器之間進行實時雙向數據傳輸。
JSON(JavaScript Object Notation)是一種輕量級的數據交換格式。它是由JavaScript提出的一種基于文本的格式,易于人閱讀和編寫,同時也易于機器解析和生成。
在C語言中,我們可以使用第三方庫libwebsockets來進行WebSocket通信,并且可以使用JSON來傳輸數據。
//創建WebSocket struct lws_context *context; struct lws *wsi; struct lws_protocols protocol; memset(&protocol, 0, sizeof(protocol)); protocol.name = "test"; protocol.callback = callback_function; protocol.rx_buffer_size = 1024; protocol.user = user_data; struct lws_client_connect_info connect_info; memset(&connect_info, 0, sizeof(connect_info)); connect_info.context = context; connect_info.address = "127.0.0.1"; connect_info.port = 8080; connect_info.path = "/websocket"; connect_info.protocol = &protocol; wsi = lws_client_connect_via_info(&connect_info); //發送JSON數據 int data = 100; char json_data[1024]; memset(json_data, 0, sizeof(json_data)); cJSON *root = cJSON_CreateObject(); cJSON_AddNumberToObject(root, "data", data); cJSON_PrintPreallocated(root, json_data, sizeof(json_data), 0); lws_write(wsi, (unsigned char*)json_data, strlen(json_data), LWS_WRITE_TEXT); //接收JSON數據 char recv_data[1024]; int n = lws_receive(wsi, (unsigned char*)recv_data, sizeof(recv_data), LWS_WAITING); if(n >0){ cJSON *json = cJSON_Parse(recv_data); int data = cJSON_GetObjectItem(json, "data")->valueint; cJSON_Delete(json); }
上面的代碼通過libwebsockets創建WebSocket連接,并分別演示了通過JSON發送和接收數據的方法。