Socket是一種網絡通信協議,在C語言中可以非常方便的使用。此外,JSON(JavaScript Object Notation)是一種輕量級的數據交換格式,具有易讀、易寫、易解析等特點。在網絡通信中,經常需要通過Socket發送JSON數據,以下是發送JSON數據的C語言代碼示例。
int send_json_data(int sockfd, struct json_object *data) { const char *json_str = json_object_to_json_string(data); size_t json_len = strlen(json_str); if (send(sockfd, json_str, json_len, 0) == -1) { perror("send"); return -1; } return 0; }
此代碼通過json-c庫的json_object_to_json_string函數將JSON對象轉化為字符串,并通過send函數發送至sockfd所對應的連接。
使用此函數時,需要將json-c庫添加至代碼中,并在發送數據之前對JSON對象進行構建。例如:
struct json_object *data = json_object_new_object(); json_object_object_add(data, "name", json_object_new_string("Tom")); json_object_object_add(data, "age", json_object_new_int(20)); json_object_object_add(data, "gender", json_object_new_string("male")); send_json_data(sockfd, data); json_object_put(data);
這里創建了一個名為data的JSON對象,并加入了name、age和gender三個鍵值對。其中,name和gender使用json_object_new_string函數創建值為字符串的JSON對象,age使用json_object_new_int函數創建值為整型的JSON對象。
使用完畢后,需要對JSON對象進行銷毀,釋放所占用的內存空間,以避免內存泄漏。
總的來說,發送JSON數據通過Socket也并不復雜,只需使用json-c庫的函數將JSON對象轉化為字符串并發送即可。注意在發送數據之前需要構建JSON對象,并在發送之后將其銷毀。