在網絡通信中,Socket是一種非常常用的通信方式。它可以實現進程間的通信和跨網絡的通信。而JSON是一種輕量級的數據交換格式,它是通信過程中常用的數據格式之一。
本文將介紹如何使用C語言實現Socket轉JSON的功能。
// 引入頭文件 #include <stdio.h> #include <stdlib.h> #include <string.h> #include <sys/socket.h> #include <arpa/inet.h> #include <unistd.h> #include <jansson.h> int main(int argc, char *argv[]) { // 創建Socket int socket_fd = socket(AF_INET, SOCK_STREAM, 0); if (socket_fd == -1) { printf("Failed to create socket"); exit(1); } // 定義Socket地址 struct sockaddr_in server_address; server_address.sin_family = AF_INET; server_address.sin_port = htons(8080); server_address.sin_addr.s_addr = INADDR_ANY; // 連接Socket if (connect(socket_fd, (struct sockaddr *)&server_address, sizeof(server_address)) == -1) { printf("Failed to connect"); exit(1); } // 定義JSON對象 json_t *json_obj = json_object(); json_object_set_new(json_obj, "name", json_string("張三")); json_object_set_new(json_obj, "gender", json_string("男")); json_object_set_new(json_obj, "age", json_integer(20)); // 轉為JSON字符串 char *json_str = json_dumps(json_obj, JSON_ENCODE_ANY); // 發送JSON字符串 write(socket_fd, json_str, strlen(json_str)); // 釋放內存 free(json_str); json_decref(json_obj); // 關閉Socket close(socket_fd); return 0; }
以上代碼實現了連接到服務器,并向服務器發送JSON字符串的功能。其中,我們使用了json-c這個開源的C語言JSON庫,它提供了一系列函數,可以方便地操作JSON數據。
當然,這只是一個簡單的示例。在實際項目中,可能需要根據具體需求,使用不同的JSON庫和Socket操作方式。