2013-08-13 1 views
0

я делаю какое-то сообщение, которое проходит с модулем ядра в C++, который имеет общается с модулем на Python и интерфейс GraphicsКак использовать правильно мульти потоков в C++ и ZMQ

Я делаю сообщения используя ZMQ в следующем виде:

int main() 
{ 
    context_t context(1); 
    socket_t publisher(context, ZMQ_PUB); 
    publisher.bind("tcp://127.0.0.1:50000"); 
//This sockets takes charge of the python publishing 
    socket_t send_py(context, ZMQ_SUB); 
    send_py.bind("tcp://127.0.0.1:5557"); 
    socket_t receive_py(context, ZMQ_SUB); 
    receive_py.connect("tcp://127.0.0.1:5558"); 
    receive_py.setsockopt(ZMQ_SUBSCRIBE, NULL, 0); 
    zmq::message_t control_signal(sizeof(float)); 
    zmq::message_t control_signal_second(sizeof(float)); 
    cout<<"flag"<<endl; 
    publisher.send(control_signal); 
    cout<<"flag_1"<<endl; 
    send_py.send(control_signal_second); 
    cout<<"flag_2"<<endl 

} 

Я уже поиграл с адресами, и я уверен, что порты открыты.

Код компилируется, но я получаю следующий результат:

flag 
flag_1 
terminate called after throwing an instance of 'zmq::error_t' 
    what(): Operation not supported 
Aborted (core dumped) 

Правильно ли один из них издательства, но не давая send_pyu.send работу.

Большое спасибо

+0

Можете ли вы предоставить более подробную информацию об обмене сообщениями? Кто отправляет и кто получает? Это не ясно из кода. – raffian

ответ

1

Оказывается, вы определили send_py как подписчик:

socket_t send_py(context, ZMQ_SUB); 
send_py.bind("tcp://127.0.0.1:5557"); 

..но вы пытаетесь отправить данные на него, что является недопустимым и не поддерживается; подписчики получают, они не отправляют данные.

send_py.send(control_signal_second); 

Если вам нужно отправить данные, используйте PUB, PUSH, или какой-либо другой тип сокета, но SUB не будет работать с send(); он будет кидать Operation Not Supported.

+0

Сладкая благодарность, я действительно пропустил это, я мог бы поклясться, что и издатель, и send_py имели тот же экземпляр. –

Смежные вопросы