ZeroMQ--”;“非插座上的插座操作”;尝试在C++; 我一直试图用C++来使用一个异步服务器运行ZrOMQ(使用CPPPZMQ绑定)。我的文件编译得很好,但我在运行时遇到一个类型为zmq::error\u t的错误:“非套接字上的套接字操作”
我根据“ZeroMQ:the Guide”中的建模,修复了示例中的一些错误(例如出于某种原因尝试将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
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) {}
到
参考:有关更多详细信息,请检查线程。在执行过程中错误发生在哪一行?在执行过程中错误发生在哪一行?