色婷婷狠狠18禁久久YY,CHINESE性内射高清国产,国产女人18毛片水真多1,国产AV在线观看

c 接收http post json

林玟書1年前9瀏覽0評論

C語言是一種廣泛應用于系統編程、嵌入式開發和網絡編程的高級語言,擁有強大的功能和靈活的語法。在實際開發中,常常需要使用C語言接收HTTP POST請求中的JSON數據。下面我們就來講解一下如何使用C語言接收HTTP POST JSON。

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <unistd.h>
#include <sys/stat.h>
#include <sys/socket.h>
#include <netinet/in.h>
#include <arpa/inet.h>
int main() {
// 創建socket
int fd = socket(AF_INET, SOCK_STREAM, 0);
if (fd == -1) {
perror("socket error");
exit(-1);
}
// 綁定IP地址和端口號
struct sockaddr_in addr;
addr.sin_family = AF_INET;
addr.sin_port = htons(80);
addr.sin_addr.s_addr = inet_addr("127.0.0.1");
if (bind(fd, (struct sockaddr*)&addr, sizeof(addr)) == -1) {
perror("bind error");
exit(-1);
}
// 開始監聽
if (listen(fd, 20) == -1) {
perror("listen error");
exit(-1);
}
// 等待客戶端連接并接收請求數據
while (1) {
struct sockaddr_in client_addr;
socklen_t addr_len = sizeof(client_addr);
int client_fd = accept(fd, (struct sockaddr*)&client_addr, &addr_len);
if (client_fd == -1) {
perror("accept error");
continue;
}
char buf[1024] = {0};
int len = 0;
while ((len = recv(client_fd, buf, sizeof(buf), 0)) >0) {
printf("%s\n", buf);
}
// 解析JSON數據
char post_data[1024] = {0};
sscanf(buf, "POST / HTTP/1.1\nContent-Length: %*d\n\n%s", post_data);
printf("JSON data: %s\n", post_data);
close(client_fd);
}
close(fd);
return 0;
}

上述代碼是一個簡單的HTTP服務器程序。其中使用了socket、bind、listen、accept等函數創建了一個套接字并開始監聽客戶端連接。在接收到客戶端的請求數據后,通過sscanf函數從請求報文中提取出POST請求中的JSON數據,最后打印出來。

當然,在實際應用中,我們通常會使用更加穩定和可靠的開源框架庫來實現JSON的解析和處理。