QSocketNotifier vs nanomsg

Можно ли использовать QSocketNotifier для nanomsg сокета, чтобы что-то делать, если получены какие-либо данные? Я пытался использовать этот код, но ничего не происходит при запуске nanocat --req --connect ipc:///tmp/node0.ipc --data pong --format ascii , Я даже не знаю, как проверить, на каком этапе возникает проблема, потому что нет ошибок.

Wrapper::Wrapper(QObject *parent) : QObject(parent) {
...
createNode();
int fd;
size_t sz = sizeof(fd);
nn_getsockopt(sock, NN_SOL_SOCKET, NN_RCVFD, &fd, &sz);
QSocketNotifier m_notifier(fd, QSocketNotifier::Read);
QObject::connect(&m_notifier, SIGNAL(activated(int)), this,   SLOT(nmsgRecieve()));
m_notifier.setEnabled(true);
...
}

void Wrapper::createNode() {
const char* url = "ipc:///tmp/node0.ipc";

if ((sock = nn_socket(AF_SP, NN_REP)) < 0) {
qDebug() << "nn_socket" << nn_strerror(nn_errno());
exit(1);
}
if ((rv = nn_bind(sock, url)) < 0) {
qDebug() << "nn_bind" << nn_strerror(nn_errno());
exit(1);
}
}

void Wrapper::nmsgRecieve() {
qDebug() << "Some msg";
char *buf = NULL;
int bytes;
if ((bytes = nn_recv(sock, &buf, NN_MSG, 0)) < 0) {
qDebug() << "nn_recv" << nn_strerror(nn_errno());
exit(1);
}
qDebug() << buf;
nn_freemsg(buf);
}

1

Решение

Ну, это был действительно глупый вопрос, который не имел ничего общего с nanomsg или QSocketNotifier. Я создал свой QSocketNotifer так, чтобы он был уничтожен, как только закончится блок конструктора.

0

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]