Go to the documentation of this file.
10 #define ZMQ_BUILD_DRAFT_API
11 #include "../../../../include/zmq.h"
13 #pragma comment(lib,"libzmq.lib")
20 #define SERVER_ADDR "tcp://127.0.0.1:12345"
21 #define SERVER_WORKER_COUNT 3 // worker threads count
23 #define CLIENT_COUNT 5 // client threads count
24 #define CLIENT_CONNECTION 100 // ZMQ_CLIENT sockets at each client
25 #define CLIENT_RECONNECT 1000 // reconnect one socket after messages
27 #define MESSAGE_MAX_SIZE 1024
35 int size =
sizeof(int) * 2 +
val;
38 memcpy(
data, &
val,
sizeof(
int));
43 memcpy(
data, &check_sum,
sizeof(
int));
49 assert(
size >
sizeof(
int) * 2);
52 memcpy(&
val,
data,
sizeof(
int));
53 if(
size !=
sizeof(
int) * 2 +
val) {
54 fprintf(stderr,
"wrong message: val = %d size = %d\n",
val,
size);
60 for(
int i = 0;
i <
val;
i++) {
65 memcpy(&check_sum,
data,
sizeof(
int));
67 fprintf(stderr,
"wrong message: cs = %d check_sum = %d\n", cs, check_sum);
84 printf(
"worker %d start\n", num);
148 int v = rand() % 256 + 1;
175 if(rc !=
val[
i] && rc > 0) {
176 fprintf(stderr,
"wrong message: send %d recv %d \n",
val[
i], rc);
195 printf(
"ZMQ version %d.%d.%d. Compile %s %s\n",
v1,
v2,
v3, __DATE__, __TIME__);
212 fprintf(stderr,
"worker %d not work \n",
i);
220 fprintf(stderr,
"client %d not work \n",
i);
225 printf(
"\rTotal %d messages. Speed %d per second ", t, t - total);
ZMQ_EXPORT void zmq_version(int *major_, int *minor_, int *patch_)
#define CLIENT_CONNECTION
ZMQ_EXPORT int zmq_msg_send(zmq_msg_t *msg_, void *s_, int flags_)
ZMQ_EXPORT void * zmq_ctx_new(void)
std::atomic< int > client_ready
ZMQ_EXPORT void * zmq_msg_data(zmq_msg_t *msg_)
ZMQ_EXPORT int zmq_connect(void *s_, const char *addr_)
std::atomic< int > client_cnt[CLIENT_COUNT]
ZMQ_EXPORT size_t zmq_msg_size(const zmq_msg_t *msg_)
ZMQ_EXPORT int zmq_bind(void *s_, const char *addr_)
ZMQ_EXPORT int zmq_msg_recv(zmq_msg_t *msg_, void *s_, int flags_)
ZMQ_EXPORT void * zmq_socket(void *, int type_)
ZMQ_EXPORT int zmq_msg_init(zmq_msg_t *msg_)
ZMQ_EXPORT int zmq_close(void *s_)
#define SERVER_WORKER_COUNT
ZMQ_EXPORT int zmq_msg_init_size(zmq_msg_t *msg_, size_t size_)
GLfloat GLfloat GLfloat GLfloat v3
void message_fill(zmq_msg_t *msg, int val)
int message_check(zmq_msg_t *msg)
GLint GLenum GLsizei GLsizei GLsizei GLint GLsizei const GLvoid * data
GLubyte GLubyte GLubyte GLubyte w
std::atomic< int > worker_cnt[SERVER_WORKER_COUNT]
ZMQ_EXPORT int zmq_msg_close(zmq_msg_t *msg_)
GLfloat GLfloat GLfloat v2
libaditof
Author(s):
autogenerated on Wed May 21 2025 02:06:59