2013-08-13 6 views
0
내가 파이썬 모듈과 comunicate 수하는 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 일을시키는되지 않습니다.

고마워 당신이 가입자로 send_py을 정의한 나타납니다

+0

메시지 교환에 대한 자세한 내용을 제공 할 수 있습니까? 누가 전송하고 누가 수신합니까? 코드에서 명확하지 않습니다. – raffian

답변

1

:

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

당신이 그것에 데이터를 전송하기 위해 노력하고 ..하지만, 무효 지원되지이다; 구독자는 데이터를 보내지 않습니다.

send_py.send(control_signal_second); 

당신이 send() 작동하지 않습니다 PUB, PUSH, 또는 다른 소켓 타입,하지만 SUB를 사용하여 데이터를 전송해야하는 경우; Operation Not Supported을 던질 것입니다.

+0

달콤한 덕분에, 나는 실제로 그것을 놓쳤습니다. 나는 publisher와 send_py가 같은 인스턴스를 가지고 있다고 맹세 할 수있었습니다. –