65 lines
1.5 KiB
C
Executable File
65 lines
1.5 KiB
C
Executable File
//
|
|
// 气象信息客户端
|
|
// 连接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;
|
|
}
|