PracticeDev/study_clang/zmq/mult-thread-reqrep/client.c

107 lines
2.8 KiB
C
Raw Normal View History

2022-12-20 17:31:11 +08:00
#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;
}