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

c 異步接收json

C語(yǔ)言是一門(mén)非常實(shí)用的編程語(yǔ)言,常常用于系統(tǒng)開(kāi)發(fā)、網(wǎng)絡(luò)編程等領(lǐng)域。在網(wǎng)絡(luò)編程中,使用異步接收J(rèn)SON數(shù)據(jù)是非常常見(jiàn)的操作。下面將介紹如何使用C語(yǔ)言實(shí)現(xiàn)異步接收J(rèn)SON數(shù)據(jù)。

//首先需要引入一些頭文件
#include#include#include#include#include#include#include#include#include#include#include#include#include#include#define MAXLINE 4096
//下面是異步接收J(rèn)SON數(shù)據(jù)的實(shí)現(xiàn)代碼
static char buffer[MAXLINE]; //定義存放JSON數(shù)據(jù)的緩沖區(qū)
static int pos; //定義緩沖區(qū)當(dāng)前位置
json_object * async_receive_json(int sockfd) 
{
int fd_flags, ret;
struct sockaddr_in servaddr;
socklen_t len = sizeof(servaddr);
fd_set rset;
json_object * obj = NULL;
struct timeval timeout;
while (1) {
FD_ZERO(&rset);
FD_SET(sockfd, &rset);
timeout.tv_sec = 5;
timeout.tv_usec = 0;
//使用select等待數(shù)據(jù)
ret = select(sockfd + 1, &rset, NULL, NULL, &timeout);
if (ret< 0) {
if (errno == EINTR) continue;
return NULL;
} else if (ret == 0) {
return NULL;
}
//接收J(rèn)SON數(shù)據(jù)
memset(buffer + pos, 0, MAXLINE - pos);
ret = recvfrom(sockfd, buffer + pos, MAXLINE - pos, 0,
(struct sockaddr *)&servaddr, &len);
if (ret<= 0) {
continue;
}
pos += ret;
//解析JSON數(shù)據(jù)
obj = json_tokener_parse(buffer);
if (obj) break;
}
//清空緩沖區(qū)
memset(buffer, 0, MAXLINE);
pos = 0;
return obj;
}

以上就是使用C語(yǔ)言實(shí)現(xiàn)異步接收J(rèn)SON數(shù)據(jù)的全部?jī)?nèi)容,大家可以根據(jù)自己的需求進(jìn)行修改和使用。希望對(duì)大家有所幫助。