使用zmq通信,client发送消息到server2,server2接收到消息后发送给server1
client.c
#include <zmq.h>
#include <string.h>
#include <stdio.h>
#include <unistd.h>
int main ()
{
void *context = zmq_init (1);
printf ("Connecting to hello world server...\n");
void *requester = zmq_socket (context, ZMQ_DEALER);
zmq_connect (requester, "tcp://localhost:9999");
int request_nbr;
while(1)
{
zmq_msg_t request;
zmq_msg_init_data (&request, "Hello", 6, NULL, NULL);
printf ("Sending request %d...\n", request_nbr);
zmq_send (requester, &request, sizeof(request), 0);
zmq_msg_close (&request);
sleep(1);
}
zmq_close(requester);
zmq_term(context);
return 0;
}
server1.c
#include <zmq.h>
#include <string.h>
#include <stdio.h>
#include <unistd.h>
int main ()
{
void *context1 = zmq_init (1);
printf ("Connecting to hello world server...\n");
void *requester1 = zmq_socket (context1, ZMQ_DEALER);
zmq_connect (requester1, "tcp://localhost:9999");
int request_nbr;
while(1)
{
zmq_msg_t reply;
zmq_msg_init (&reply);
zmq_recv (requester1, &reply, sizeof(reply), 0);
printf ("Received reply %d: [%s]\n", request_nbr, (char *)
zmq_msg_data (&reply));
zmq_msg_close (&reply);
}
zmq_close (requester1);
zmq_term (context1);
return 0;
}
server2.c
#include <stdio.h>
#include <zmq.h>
#include <string.h>
#include <stdlib.h>
int main()
{
void *pCtx = NULL;
void *pSock = NULL;
const char *pAddr = "tcp://*:9999";
if ((pCtx = zmq_ctx_new()) == NULL)
{
return 0;
}
if ((pSock = zmq_socket(pCtx, ZMQ_DEALER)) == NULL)
{
zmq_ctx_destroy(pCtx);
return 0;
}
int iRecvTimeout = 5000;
if (zmq_setsockopt(pSock, ZMQ_RCVTIMEO, &iRecvTimeout, sizeof(iRecvTimeout)) < 0)
{
zmq_close(pSock);
zmq_ctx_destroy(pCtx);
return 0;
}
if (zmq_bind(pSock, pAddr) < 0)
{
zmq_close(pSock);
zmq_ctx_destroy(pCtx);
return 0;
}
while (1)
{
char szMsg[1024] = {0};
printf("waitting...\n");
errno = 0;
if (zmq_recv(pSock, szMsg, 1024, 0) < 0)
{
printf("errno = %s\n", zmq_strerror(errno));
continue;
}
char buf[] = "hello";
zmq_send(pSock, buf, sizeof(buf), 0);
printf("received message: %s\n", szMsg);
}
return 0;
}