Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/sockets/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
ZeroMQ--”;“非插座上的插座操作”;尝试在C++; 我一直试图用C++来使用一个异步服务器运行ZrOMQ(使用CPPPZMQ绑定)。我的文件编译得很好,但我在运行时遇到一个类型为zmq::error\u t的错误:“非套接字上的套接字操作”_C++_Sockets_Zeromq - Fatal编程技术网

ZeroMQ--”;“非插座上的插座操作”;尝试在C++; 我一直试图用C++来使用一个异步服务器运行ZrOMQ(使用CPPPZMQ绑定)。我的文件编译得很好,但我在运行时遇到一个类型为zmq::error\u t的错误:“非套接字上的套接字操作”

ZeroMQ--”;“非插座上的插座操作”;尝试在C++; 我一直试图用C++来使用一个异步服务器运行ZrOMQ(使用CPPPZMQ绑定)。我的文件编译得很好,但我在运行时遇到一个类型为zmq::error\u t的错误:“非套接字上的套接字操作”,c++,sockets,zeromq,C++,Sockets,Zeromq,我根据“ZeroMQ:the Guide”中的建模,修复了示例中的一些错误(例如出于某种原因尝试将std::bind绑定到向量) 如果需要,这是我的 守则副本: #include "worker.hpp" void SkidooshBrokerTask::run() { frontend.bind("tcp://*:20401"); backend.bind("inproc://backend"); std::vector<SkidooshBrokerWorke

我根据“ZeroMQ:the Guide”中的建模,修复了示例中的一些错误(例如出于某种原因尝试将
std::bind
绑定到向量)

如果需要,这是我的

守则副本:

#include "worker.hpp"

void SkidooshBrokerTask::run() {
    frontend.bind("tcp://*:20401");
    backend.bind("inproc://backend");

    std::vector<SkidooshBrokerWorker *> workers;
    std::vector<std::thread *> worker_threads;

    for (int i=0; i<kMaxThread; ++i) {
        workers.push_back(new SkidooshBrokerWorker(ctx,ZMQ_DEALER));
        worker_threads.push_back(new std::thread(std::bind(&SkidooshBrokerWorker::work, workers[workers.size()-1])));
        worker_threads[worker_threads.size()-1]->detach();
    }

    try {
        zmq::proxy(&frontend,&backend,nullptr);
    } catch (std::exception &e) {

    }

    for (int i=0;i<kMaxThread; ++i) {
        delete workers[i];
        delete worker_threads[i];
    }
}

void SkidooshBrokerWorker::work() {
    wk_sck.connect("inproc://backend");        
    try {
        while (true) {
            zmq::message_t identity;
            zmq::message_t msg;
            zmq::message_t copied_id;
            zmq::message_t copied_msg;
            std::string rq_str;
            wk_sck.recv(&identity);
            wk_sck.recv(&msg);

            rq_str = std::string(static_cast<char *>(msg.data()),msg.size());
            copied_id.copy(&identity);
            copied_msg.copy(&msg);
        }
    } catch (std::exception &e) {}
}
#包括“worker.hpp”
void SkidooshBrokerTask::run(){
前端绑定(“tcp://*:20401”);
backend.bind(“inproc://backend");
病媒工作者;
std::向量工作者线程;
for(int i=0;idetach();
}
试一试{
zmq::代理(前端和后端,nullptr);
}捕获(标准::异常&e){
}

对于(inti=0;i我知道这是一个迟来的答案。但是我在使用zmq::poll()时也有同样的错误

你可以试着改变

try 
{
    zmq::proxy(&frontend,&backend,nullptr);
} catch (std::exception &e) {}


参考:有关更多详细信息,请查看线程。

我知道这是一个迟来的答案。但我在使用zmq::poll()时遇到了相同的错误

你可以试着改变

try 
{
    zmq::proxy(&frontend,&backend,nullptr);
} catch (std::exception &e) {}


参考:有关更多详细信息,请检查线程。

在执行过程中错误发生在哪一行?在执行过程中错误发生在哪一行?