c++11 json 处理

c++11 json的库 https://github.com/dropbox/json11

tcp接收json字符串并处理

void *ThreadTcp(void *ptr)
{
int listenfd, connfd;
struct sockaddr_in servaddr;
char buff[4096];
int n;

if( (listenfd = socket(AF_INET, SOCK_STREAM, 0)) == -1 ){
printf("create socket error: %s(errno: %d)\n", strerror(errno), errno);
return 0;
}

memset(&servaddr, 0, sizeof(servaddr));
servaddr.sin_family = AF_INET;
servaddr.sin_addr.s_addr = htonl(INADDR_ANY);
servaddr.sin_port = htons(9060);

if( bind(listenfd, (struct sockaddr*)&servaddr, sizeof(servaddr)) == -1){
printf("bind socket error: %s(errno: %d)\n", strerror(errno), errno);
return 0;
}

if( listen(listenfd, 10) == -1){
printf("listen socket error: %s(errno: %d)\n", strerror(errno), errno);
return 0;
}

printf("======waiting for client's request======\n");
while(1){
if( (connfd = accept(listenfd, (struct sockaddr*)NULL, NULL)) == -1){
printf("accept socket error: %s(errno: %d)", strerror(errno), errno);
continue;
}
cout << connfd << endl; n = recv(connfd, buff, MAXLINE, 0); buff[n] = '\0'; //printf("recv msg from client: %s\n", buff); string err_comment; auto recv_data = Json::parse(buff, err_comment); Json::array account_list = recv_data.array_items(); for (auto &account_data : account_list) { cout << "account: " << account_data["account"].string_value() << endl; cout << "password: " << account_data["password"].string_value() << endl; } //close(connfd); } close(listenfd); return 0; }

发表评论

电子邮件地址不会被公开。 必填项已用*标注