我正在尝试在本地网络中使用 PUSH/PULL 模式进行分布式计算。到目前为止,一切似乎都解决了,但是,我发现在启动 31 个工作人员(服务器)时,客户端(呼吸机和收集器)应用程序崩溃了。
Windows 上某个端口的连接是否有限制(在 MacOs X 上似乎不是这种情况)。我在 zeromq 示例中使用 tcp 传输和端口 5555 和 5556。该行为是远程和本地工作人员的观察者。
谢谢
更新:继承代码(来自 zmq 指南的修改示例)
#include <zmq.hpp>
#include <stdlib.h>
#include <stdio.h>
#include <unistd.h>
#include <iostream>
#include <sstream>
int main (int argc, char *argv[])
{
zmq::context_t context(1);
int number_of_sockets=32; // 32 will crash, 30 will pass
zmq::socket_t** receiver=new zmq::socket_t*[number_of_sockets];
zmq::socket_t** sender=new zmq::socket_t*[number_of_sockets];
std::cout<< "go"<<std::endl;
for (int i=0;i<number_of_sockets; i++)
{
receiver[i]=new zmq::socket_t(context, ZMQ_PULL);
receiver[i]->connect("tcp://localhost:5555");
}
std::cout<< "ok"<<std::endl;
for (int i=0;i<number_of_sockets; i++)
{
sender[i]=new zmq::socket_t(context, ZMQ_PUSH);
sender[i]->connect("tcp://localhost:5556");
}
std::cout << "done" <<std::endl;
return 0;
}
我通过以下命令使用 Mingw-w64-tdm (4.5) 构建:
g++ -o worker.exe taskworker.cpp -L/./lib -lzmq -L/./lib/zeromq/libzmq.la -liphlpapi -lrpcrt4 -lws2_32 -lpthread