在 C 語言中,處理 JSON 數據信息是一項非常重要的任務。因為在實際的編程開發中,我們常常需要通過網絡等途徑與其他系統進行交互,而 JSON 就是一種被廣泛使用的數據傳輸格式之一。下面介紹如何在 C 語言中通過 POST 方法接收并處理 JSON 數據。
#include <stdio.h> #include <stdlib.h> #include <string.h> #include <netdb.h> #include <sys/socket.h> #define PORT 8080 #define MAX_BUF_SIZE 1024 int main() { int server_fd, new_socket; long valread; struct sockaddr_in address; int opt = 1; int addrlen = sizeof(address); char buffer[MAX_BUF_SIZE] = {0}; // 創建 socket 文件描述符 if ((server_fd = socket(AF_INET, SOCK_STREAM, 0)) == 0) { perror("socket failed"); return -1; } // 設置連接選項 if (setsockopt(server_fd, SOL_SOCKET, SO_REUSEADDR | SO_REUSEPORT, &opt, sizeof(opt))) { perror("setsockopt"); return -1; } address.sin_family = AF_INET; address.sin_addr.s_addr = INADDR_ANY; address.sin_port = htons(PORT); // 綁定地址和端口號 if (bind(server_fd, (struct sockaddr *)&address, sizeof(address))< 0) { perror("bind failed"); return -1; } // 監聽端口號 if (listen(server_fd, 3)< 0) { perror("listen"); return -1; } // 啟動服務器循環 while (1) { printf("server listening on port %d\n", PORT); // 接收連接請求 if ((new_socket = accept(server_fd, (struct sockaddr *)&address, (socklen_t *)&addrlen))< 0) { perror("accept"); return -1; } // 讀取請求數據 valread = read(new_socket, buffer, MAX_BUF_SIZE); // 打印請求內容 printf("%s\n", buffer); // 處理 JSON 數據...... close(new_socket); // 關閉連接 } return 0; }
代碼中,我們使用了基于 socket 的編程方式實現了一個簡單的服務器程序。通過調用 socket 函數創建了一個 socket 文件描述符,并設置了一些連接選項。之后使用 bind 函數將該 socket 文件描述符綁定到本地地址和指定端口號,使用 listen 函數來監聽連接請求。最后使用 accept 函數接收來自客戶端的連接請求,并通過讀取請求數據并打印出來來驗證是否收到了正確的 JSON 數據。
上一篇python+ln2
下一篇python+len報錯