首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >QSocketNotifier vs nanomsg

QSocketNotifier vs nanomsg
EN

Stack Overflow用户
提问于 2018-07-17 21:55:20
回答 0查看 242关注 0票数 1

是否可以对nanomsg套接字使用QSocketNotifier,以便在接收到任何数据时执行某些操作?我尝试使用此代码,但在运行nanocat --req --connect ipc:///tmp/node0.ipc --data pong --format ascii时没有任何反应。我甚至不知道如何检查问题发生在哪一步,因为没有错误。

代码语言:javascript
复制
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);
 }
EN

回答

页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/51383252

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档