欧美一区二区三区,国内熟女精品熟女A片视频小说,日本av网,小鲜肉男男GAY做受XXX网站

c 接收服務端過來的json數據

錢浩然1年前8瀏覽0評論

C語言是一種廣泛應用于嵌入式系統開發、網絡編程和游戲開發的編程語言,也是很多程序員必備的語言之一。在網絡編程中,接收服務端過來的json數據是非常常見的操作。本文將介紹一些基本的C語言代碼實現方法,幫助您輕松地接收服務端過來的json數據。

//頭文件引入
#include#include#include#include#include//發送請求
void send_request(int sockfd, char *request) {
int len = strlen(request);
int sent = 0;
while(sent< len) {
int n = send(sockfd, request+sent, len-sent, 0);
if (n == -1) {
perror("send error");
exit(1);
}
sent += n;
}
}
//接收數據
char *recv_response(int sockfd) {
//創建緩沖區
char buffer[1024];
memset(buffer, 0, sizeof(buffer));
//接收服務端過來的數據
int n = recv(sockfd, buffer, sizeof(buffer), 0);
if (n == -1) {
perror("recv error");
exit(1);
}
//處理數據
char *result = (char *)malloc(strlen(buffer)+1);
strcpy(result, buffer);
return result;
}
//連接服務器
int connect_server(char *ip, int port) {
//創建socket描述符
int sockfd = socket(AF_INET, SOCK_STREAM, 0);
if (sockfd == -1) {
perror("socket error");
exit(1);
}
//創建服務器地址
struct sockaddr_in serv_addr;
memset(&serv_addr, 0, sizeof(serv_addr));
serv_addr.sin_family = AF_INET;
serv_addr.sin_addr.s_addr = inet_addr(ip);
serv_addr.sin_port = htons(port);
//連接服務器
if (connect(sockfd, (struct sockaddr*)&serv_addr, sizeof(serv_addr)) == -1) {
perror("connect error");
exit(1);
}
//返回socket描述符
return sockfd;
}
//主函數
int main() {
//連接服務器
int sockfd = connect_server("127.0.0.1", 8080);
//發送請求數據
char *request = "GET /api/data HTTP/1.1\r\nHost: localhost\r\nConnection: close\r\n\r\n";
send_request(sockfd, request);
//接收服務端過來的json數據
char *response = recv_response(sockfd);
printf("%s", response);
//關閉socket描述符
close(sockfd);
return 0;
}

以上就是一段簡單的C語言代碼,通過這些代碼可以輕松地接收服務端過來的json數據。在代碼中,我們使用了socket函數連接服務器,使用send函數發送請求數據,使用recv函數接收服務器返回的數據。在recv_response函數中,我們創建了一個緩沖區,通過recv函數接收收到的數據,最后通過malloc函數動態分配內存來保存接收到的數據。