在 C 語言中,要接收 POST 傳參的 JSON 可以通過以下步驟來實現:
步驟一:創建 socket
int sockfd = socket(AF_INET, SOCK_STREAM, 0); if (sockfd == -1) { perror("socket"); exit(1); }
步驟二:綁定端口
struct sockaddr_in servaddr; memset(&servaddr, 0, sizeof(servaddr)); servaddr.sin_family = AF_INET; servaddr.sin_addr.s_addr = htonl(INADDR_ANY); servaddr.sin_port = htons(port); if (bind(sockfd, (struct sockaddr*)&servaddr, sizeof(servaddr)) == -1) { perror("bind"); exit(1); }
步驟三:監聽請求
if (listen(sockfd, 10) == -1) { perror("listen"); exit(1); }
步驟四:接收請求
struct sockaddr_in cliaddr; socklen_t cliaddrlen = sizeof(cliaddr); int connfd = accept(sockfd, (struct sockaddr*)&cliaddr, &cliaddrlen); char recvbuf[BUFSIZE] = {0}; int n = read(connfd, recvbuf, sizeof(recvbuf)-1); // 處理請求參數 char* contentlen = strstr(recvbuf, "Content-Length"); if (contentlen == NULL) { printf("no content length\n"); exit(1); } int len = atoi(contentlen+strlen("Content-Length: ")); char* json_start = strstr(recvbuf, "{"); if (json_start == NULL) { printf("no json data\n"); exit(1); } memcpy(recvbuf, json_start, len); recvbuf[len] = '\0'; // 解析 JSON json_object* jobj = json_tokener_parse(recvbuf);
通過上述步驟,我們就可以在 C 語言中接收 POST 傳參的 JSON。
上一篇python 登錄跳板機
下一篇vue中刪除提示