Есть ли способ отправить типы данных, кроме строк через ZEROMQ Pub Sub C ++? - PullRequest
0 голосов
/ 21 июня 2019

Я пытаюсь отправить массив, состоящий из строки, числовых значений, через издателя zeromq для подписчика. Я могу отправлять сообщения только после того, как ввел что-либо в строку. Есть ли альтернативный способ отправки данных, кроме строки?

Когда я пытаюсь отправить типы данных без приведения типов, это приводит к ошибке.

int main () {
    //  Prepare our context and publisher
    zmq::context_t context(1);
    zmq::socket_t publisher(context, ZMQ_PUB);
    publisher.bind("tcp://*:5563");
int val;
std::string a;
    while (1) {

        a = std::to_string(rand()));

        //  Write two messages, each with an envelope and content
        s_sendmore (publisher, "B");
        s_send (publisher,a);
        sleep (1);
    } 

результат:

 error: invalid initialization of reference of type ‘const string& aka const std::__cxx11::basic_string<char>&}’ from expression of type ‘char’
         s_send (publisher, char(rand()));

1 Ответ

2 голосов
/ 21 июня 2019

Тупой ответ: нет

ZeroMQ не кодирует ваши данные - что бы это ни было, вы должны сделать это самостоятельно или использовать библиотеку типа .Именно здесь в игру вступают более полнофункциональные библиотеки RPC, такие как apache thrift , поскольку они обычно обрабатывают некоторые формы кодирования, а также передачу / мультиплексирование / и т. Д.

...