在C語言中,通過Socket發送JSON報文需要進行一些額外的處理,下面我們來介紹一下具體的步驟。
#include <stdio.h> #include <stdlib.h> #include <string.h> #include <sys/socket.h> #include <arpa/inet.h> #include <unistd.h> #define SERVER_IP "127.0.0.1" #define SERVER_PORT 8888 #define BUFFER_SIZE 1024 int main() { // 創建Socket int sock = socket(AF_INET, SOCK_STREAM, IPPROTO_TCP); if (sock< 0) { printf("Socket creation failed!\n"); exit(1); } // 連接到服務器 struct sockaddr_in server_addr; memset(&server_addr, 0, sizeof(server_addr)); server_addr.sin_family = AF_INET; server_addr.sin_addr.s_addr = inet_addr(SERVER_IP); server_addr.sin_port = htons(SERVER_PORT); if (connect(sock, (struct sockaddr *)&server_addr, sizeof(server_addr))< 0) { printf("Connect to server failed!\n"); exit(1); } // 創建JSON報文 char *json_str = "{\"name\": \"Tom\", \"age\": 18}"; int json_len = strlen(json_str); // 發送JSON報文 char buffer[BUFFER_SIZE]; memset(buffer, 0, BUFFER_SIZE); snprintf(buffer, BUFFER_SIZE, "Content-Length: %d\r\n\r\n%s", json_len, json_str); int ret = send(sock, buffer, strlen(buffer), 0); if (ret< 0) { printf("Send failed!\n"); exit(1); } // 關閉Socket close(sock); return 0; }
上面就是Socket發送JSON報文的主要代碼,其中需要注意的一些細節有:
- 需要在JSON報文前添加Content-Length字段來指定報文的長度
- 需要使用snprintf函數將Content-Length和JSON報文組合成完整的報文
使用以上代碼可以將JSON報文發送到指定的服務器上。