// // 气象信息客户端 // 连接SUB套接字至tcp://*:5556端点 // 收集指定邮编的气象信息,并计算平均温度 // #include "zhelpers.h" struct Msg { int stat; char id[100]; }; int main (int argc, char *argv []) { /* struct Msg msg; msg.stat = 1; const char *str = "hellow world!"; memset(msg.id, 0, sizeof(msg.id)); memcpy(msg.id, str, strlen(str)); int len = sizeof(struct Msg); printf("sizeofid = %d strlen = %d len = %d\n", sizeof(msg.id), strlen(str), len); */ const char* param = NULL; if (argc > 1) { param = argv[1]; } else { printf("connect where: ip/port!\n"); } char addr[40]; sprintf(addr, "tcp://%s", param); void *context = zmq_init (1); printf ("正在收集气象信息...\n"); void *subscriber = zmq_socket (context, ZMQ_SUB); zmq_connect (subscriber, addr); char *filter = "0"; zmq_setsockopt (subscriber, ZMQ_SUBSCRIBE, filter, strlen (filter)); int update_nbr; for (update_nbr = 0; update_nbr < 100; update_nbr++) { char *string = s_recv (subscriber); printf("string=%s %d \n", string ,strlen(string)); int protocol_serial = 0; int len = 0; struct Msg msg; sscanf (string, "%d|%d|%d|%s", &protocol_serial, &msg.stat, &len, msg.id); printf("recv ps=%d stat=%d len=%d id=%s\n", protocol_serial, msg.stat, len, msg.id); free (string); } zmq_close (subscriber); zmq_term (context); return 0; }