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

c select轉json

方一強2年前8瀏覽0評論

C語言的select函數可用于在多個文件描述符之間進行檢查,實現I/O多路復用。在實際應用中,我們通常需要將程序中select函數監測到的數據轉成JSON格式,以便進行更有效的操作和處理。

fd_set rset;
FD_ZERO(&rset);
FD_SET(sockfd, &rset);     
struct timeval t;
t.tv_sec = 1;
t.tv_usec = 0;
int nread = select(sockfd + 1, &rset, NULL, NULL, &t);
if(nread< 0){
perror("select error!"); 
exit(EXIT_FAILURE);
}
if(nread >0){
if(FD_ISSET(sockfd, &rset)){
char buf[MAXLINE];
memset(buf, '\0', sizeof(buf));
int nbytes = recv(sockfd, buf, MAXLINE-1, 0);
if(nbytes< 0){
perror("recv error!");
exit(EXIT_FAILURE);
}
else if(nbytes == 0){
printf("client closed!");
}
else{
printf("recv data:%s\n", buf);
//將接收到的數據轉換為JSON格式
cJSON *root = cJSON_CreateObject();
if(root == NULL){
printf("create json root error!\n");
exit(EXIT_FAILURE);
}
cJSON_AddStringToObject(root, "data", buf);
char *json = cJSON_Print(root);
printf("json data:%s\n", json);
//釋放JSON對象內存
cJSON_Delete(root);
free(json);
}
}
}
else{
printf("select timeout!");
}

以上代碼中,我們通過select對客戶端連接進行監聽,并在接收到數據時將其轉換為JSON格式。接著調用cJSON庫中的函數cJSON_CreateObject()創建JSON對象,將數據添加到對象中,最后調用cJSON_Print()將JSON對象轉成字符串輸出。轉換完畢后,還需釋放對象內存和字符串內存,以免發生內存泄漏。