107 lines
2.8 KiB
C
107 lines
2.8 KiB
C
#include <zmq.h>
|
|
#include <string.h>
|
|
#include <stdio.h>
|
|
#include <unistd.h>
|
|
#include <pthread.h>
|
|
|
|
void *context;
|
|
void *requester;
|
|
|
|
void initSocket()
|
|
{
|
|
context = zmq_ctx_new ();
|
|
requester = zmq_socket (context, ZMQ_REQ);
|
|
unsigned int uiTimeout = 3 * 1000;
|
|
|
|
zmq_setsockopt(requester, ZMQ_RCVTIMEO, &uiTimeout, sizeof(uiTimeout));
|
|
zmq_setsockopt(requester, ZMQ_SNDTIMEO, &uiTimeout, sizeof(uiTimeout));
|
|
zmq_connect (requester, "tcp://localhost:5555");
|
|
}
|
|
|
|
int SendData(const void *pvData, unsigned int uiDataLen)
|
|
{
|
|
initSocket();
|
|
return zmq_send (requester, pvData, uiDataLen, 0);
|
|
}
|
|
int RecvData(void *pvData, unsigned int uiDataLen)
|
|
{
|
|
int rst = zmq_recv (requester, pvData, uiDataLen, 0);
|
|
zmq_close (requester);
|
|
zmq_ctx_destroy (context);
|
|
return rst;
|
|
}
|
|
|
|
void *client1(void *args)
|
|
{
|
|
int rst;
|
|
printf ("Connecting to hello world server…\n");
|
|
|
|
int request_nbr;
|
|
for (request_nbr = 0; request_nbr != 100; request_nbr++) {
|
|
char buffer [20];
|
|
sprintf(buffer, "Hellooooooooooooooooooooooooooooooooooo %d", request_nbr);
|
|
printf ("-----------------%d--------------\n",request_nbr);
|
|
printf ("Sending %s…, rst:", buffer);
|
|
rst = SendData(buffer, 20);
|
|
if(rst < 0)
|
|
{
|
|
printf("Send error: %s\n", zmq_strerror(zmq_errno()));
|
|
sleep(1);
|
|
continue;
|
|
}
|
|
else
|
|
printf ("...ok\n");
|
|
rst = RecvData(buffer, 20);
|
|
if(rst < 0)
|
|
{
|
|
printf("recv error: %s\n", zmq_strerror(zmq_errno()));
|
|
}
|
|
else
|
|
printf ("Received World %d\n", request_nbr);
|
|
sleep(1);
|
|
}
|
|
zmq_close (requester);
|
|
zmq_ctx_destroy (context);
|
|
}
|
|
|
|
|
|
|
|
int main (void)
|
|
{
|
|
int rst;
|
|
printf ("Connecting to hello world server…\n");
|
|
|
|
int request_nbr;
|
|
for (request_nbr = 0; request_nbr != 100; request_nbr++) {
|
|
char buffer [1024];
|
|
sprintf(buffer, "Hello00000000000000000000 %d", request_nbr);
|
|
printf ("-----------------%d--------------\n",request_nbr);
|
|
printf ("Sending %s…, rst:", buffer);
|
|
// rst = zmq_send (requester, buffer, sizeof(buffer), 0);
|
|
rst = SendData(buffer, sizeof(buffer));
|
|
if(rst < 0)
|
|
{
|
|
printf("Send error: %s\n", zmq_strerror(zmq_errno()));
|
|
sleep(1);
|
|
continue;
|
|
}
|
|
else
|
|
printf ("...ok\n");
|
|
// rst = zmq_recv (requester, buffer, 10, 0);
|
|
rst = RecvData(buffer, sizeof(buffer));
|
|
if(rst < 0)
|
|
{
|
|
printf("recv error: %s\n", zmq_strerror(zmq_errno()));
|
|
// sleep(1);
|
|
// continue;
|
|
}
|
|
else
|
|
printf ("Received World %d\n", request_nbr);
|
|
|
|
// sleep(1);
|
|
}
|
|
zmq_close (requester);
|
|
zmq_ctx_destroy (context);
|
|
return 0;
|
|
}
|