Отправляю сообщения msg сначала в вектор
struct msg {
double clientId;
size_t cash;
char message[256];
};
struct msg quest2;
std::vector<msg> vector;
...
vector.push_back(quest2);
zmq_msg_t clientReq;
zmq_msg_init_size(&clientReq, sizeof(struct msg));
memcpy(zmq_msg_data(&clientReq), &quest2, sizeof(struct msg));
void* requester;
void* context;
context = zmq_ctx_new();
requester = zmq_socket(context, ZMQ_REQ);
int rc = zmq_connect(requester, "tcp://localhost:5555");
//После этого, их нужно отправить на сервер для выполнения
while(vector.size()>0){
zmq_msg_init_size(&clientReq, sizeof(struct msg));
memcpy(zmq_msg_data(&clientReq), &(vector.front()), sizeof(struct msg));
printf("sending %s\n", (vector.front()).message);
zmq_msg_send(&clientReq, requester, 0);
zmq_msg_close(&clientReq);
zmq_msg_init(&reply);
zmq_msg_recv(&reply, requester, 0);
size_t repSize = zmq_msg_size(&reply);
strcpy(ans, (char*)zmq_msg_data(&reply));
printf("Received: - %zu %s\n", repSize, ans);
if (strcmp(ans, "OK") == 0) {
printf("Operation went sucessfuly\n");
}
else if (strcmp(ans, "NOMN") == 0) {
printf("get some money\n");
}
else if (strcmp(ans, "NOFRND") == 0) {
printf("wrong user\n");
}
else if (strcmp(ans, "ERR") == 0) {
printf("some error\n");
exit(1);
}
else if (strncmp(ans, "ID", 2) == 0) {
sscanf(ans, "ID %lf CSH %zu", &friendId, &remCash);
printf("Your stats are: id - %lf\n cash amount - %zu\n", friendId, remCash);
}
else {
printf("hurr-durr-derp\n");
}
zmq_msg_close(&reply);
vector.erase(vector.begin());
//Но ans всегда возвращает OK, хотя при этом ничего не происходит. Если делать не для вектора, все работает номально.