PracticeDev/study_clang/zmq/zhelpers_client2.c

65 lines
1.5 KiB
C
Raw Permalink Normal View History

2022-12-20 17:31:11 +08:00
//
// 气象信息客户端
// 连接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;
}