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函數動態分配內存來保存接收到的數據。