0
다음 제어 흐름이 있습니다. for 루프에서 문자열 배열을 만듭니다. 배열의 각 행 (문자열)을 게시자 함수로 보냅니다. 그런 다음 게시자 함수는 문자열을 전송해야합니다. 게시자가 무한 루프에 게시하는 경우 구독자가 메시지를 수신하는 경우에만 문제가 발생합니다. 지속적으로 게시자 기능을 호출하여 데이터를 보내지 못하는 이유는 무엇입니까? 무한 루프에서만 작동하는 이유는 무엇입니까? 나는 동안 (1) 문을 빼앗아 때게시자가 무한 루프에서만 메시지를 전송합니다.
#include <zmq.hpp>
#include <iostream>
#include <sstream>
int main (int argc, char *argv[])
{
zmq::context_t context (1);
//Socket to talk to server
std::cout << "Collecting updates from device server...\n" << std::endl;
zmq::socket_t subscriber (context, ZMQ_SUB);
subscriber.connect("tcp://localhost:5556");
const char *filter = (argc > 1)? argv [1]: ""; // no filter currently
subscriber.setsockopt(ZMQ_SUBSCRIBE, filter, strlen (filter));
// Process 100 updates
zmq::message_t update;
for (int q =0 ; q<1000 ; q++) {
subscriber.recv(&update);
std::string output = std::string(static_cast<char*>(update.data()), update.size());
std:: cout <<output << std:: endl;
}
return 0;
}
것은 왜 난 아무것도받지 않는 것을 : 여기
int zedMQserver(std::string output)
{
//std ::cout << output.c_str()<< std:: endl;
zmq::context_t context (1);
zmq::socket_t publisher (context, ZMQ_PUB);
publisher.bind("tcp://*:5556");
publisher.bind("ipc://device.ipc"); // Not usable on Windows.
int i=1;
//while(1) {
// Send message to all subscribers
const int SIZE = output.length();
zmq::message_t message(SIZE+1);
snprintf ((char *) message.data(), (SIZE+1) ,
"%s", output.c_str());
publisher.send(message);
std :: cout << "sent message" << std:: endl;
//}
return 0;
내 가입자 함수 : 여기
내 게시자 기능입니다 ?