Po uruchomieniu następującego kodu otrzymuję komunikat o błędzie podczas pierwszego połączenia z numerem zmq_poll
(to znaczy zwraca -1
). zmq_errno()
zwraca 128
izwraca "Unknown error"
. Używam ZMQ z C++ od jakiegoś czasu bez żadnych problemów, ale nie mogę uzyskać połączenia z zmq_poll
do pracy, bez względu na to, jak proste to jest.Sonda ZMQ nie działa
Wywołanie zmq::version
ujawnia, że używam ZMQ w wersji 2.1.10.
Czy ktoś ma pomysł, dlaczego nie działa zmq_poll
?
#include <zmq/zmq.hpp>
int main(int argc, char* argv[])
{
zmq::context_t context(1);
zmq::socket_t repA(context, ZMQ_REP);
zmq::socket_t repB(context, ZMQ_REP);
repA.bind("tcp://127.0.0.1:5555");
repB.bind("tcp://127.0.0.1:5556");
zmq::pollitem_t items[] =
{
{ &repA, 0, ZMQ_POLLIN, 0 },
{ &repB, 0, ZMQ_POLLIN, 0 }
};
while (true)
{
int rc = zmq_poll(items, 2, 1000);
if (rc < 0)
{
int code = zmq_errno(); //code = 128
auto message = zmq_strerror(code); //message = "Unknown error"
}
}
}
Jaka jest wartość errno? _Upon awarii, zmq_poll() zwraca -1 i ustawia errno na jedną z wartości zdefiniowanych poniżej._ http://api.zeromq.org/2-1:zmq-poll – flup
@flup Widzę teraz, że 'zmq_poll' doesn 't bezpośrednio zwraca numer błędu (po prostu wysyła sygnał z '-1') i musisz wywołać' zmq_errno() ', aby uzyskać prawdziwy numer błędu. Po wykonaniu tego otrzymuję numer błędu '128'. (Zaktualizowane pytanie) –
_Aby uzyskać gniazdo ØMQ do użycia w strukturze zmq_pollitem_t, należy rzucić instancję klasy socket_t na (void *) _. Podejrzewam więc, że zamiast przesyłać adres, należy przesłać "repA". – flup