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

c tcp client支持json

老白2年前9瀏覽0評論

對于C語言的TCP客戶端,現在越來越多地需要支持JSON格式的數據傳輸。在此,我們可以使用一些JSON庫來方便地實現這一功能。

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <sys/socket.h>
#include <arpa/inet.h>
#include <netdb.h>
#include <unistd.h>
#include <jansson.h>
#define BUFLEN 1024
int main(int argc, char* argv[]) {
int sockfd, connfd;
char buffer[BUFLEN];
struct sockaddr_in serv_addr;
struct hostent *server;
sockfd = socket(AF_INET, SOCK_STREAM, IPPROTO_TCP);
if (sockfd< 0) {
printf("Error creating socket\n");
return 1;
}
server = gethostbyname(argv[1]);
if (server == NULL) {
printf("Error resolving host\n");
return 1;
}
bzero((char*) &serv_addr, sizeof(serv_addr));
serv_addr.sin_family = AF_INET;
serv_addr.sin_port = htons(atoi(argv[2]));
bcopy((char*) server->h_addr, (char*) &serv_addr.sin_addr.s_addr, server->h_length);
if (connect(sockfd, (struct sockaddr*) &serv_addr, sizeof(serv_addr))< 0) {
printf("Error connecting to server\n");
return 1;
}
// build JSON object
json_t *root;
root = json_object();
json_object_set_new(root, "name", json_string("Alice"));
json_object_set_new(root, "age", json_integer(25));
json_object_set_new(root, "email", json_string("alice@example.com"));
const char *json_string = json_dumps(root, JSON_COMPACT);
// send JSON string to server
if (send(sockfd, json_string, strlen(json_string), 0)< 0) {
printf("Error sending data to server\n");
return 1;
}
// receive response from server
bzero(buffer, BUFLEN);
int n = recv(sockfd, buffer, BUFLEN-1, 0);
if (n< 0) {
printf("Error receiving data from server\n");
return 1;
}
printf("%s\n", buffer);
// cleanup
json_decref(root);
close(sockfd);
return 0;
}

上述代碼中,我們使用了jansson庫來構建JSON對象和將JSON對象轉化為字符串。我們首先創建了一個JSON對象,然后向其中添加了一些鍵值對,最終將JSON對象轉化為字符串。接著我們將這個字符串發送給服務器,并且等待服務器的響應。一旦收到響應,我們可以直接打印即可。

需要注意的是,這里我們使用了JSON_COMPACT選項將JSON字符串壓縮為一行,從而方便發送和接收。