ACE在同一PC上具有多个应用程序实例 - 仅首先获取消息
ACE with multiple app instances on same pc - only first gets the message
我正在尝试创建应用程序,其中多个实例将在同一台计算机上运行,它们将通过同一端口通过UDP一起通信。
我在堆叠上读了许多线程,应该是可能的。
不过,当我从每个应用程序实例打开连接时,我可以看到每个实例都会发送一条消息,但仅第一个实例(如果首先关闭,则第二...)会收到该消息。
我正在使用ACE库进行通信。摘录来自代码:
ACE_SOCK_Dgram_Mcast dgram;
ACE_INET_Addr *listenAddress = new ACE_INET_Addr(12345, ACE_LOCALHOST);
dgram.open(*listenAddress);
ACE_INET_Addr peer_address;
char buffer[1024];
dgram.send(buffer, 256);
while (true)
{
if (dgram.recv(buffer, 256, peer_address, 0, &receiveLoopTimeout) != -1)
{
std::cout << "Received" << std::endl;
}
}
我还发现,如果我称为" dgram.join(*listaDdress)",那么我会从应用程序的第一个实例中获取错误,代码enodev。
我不确定我知道您要做什么...发送消息多播以使多个接收器获取它,或者允许多个进程在同一UDP端口Unicast上接收。..我猜前者。
您使用的是ACE_SOCK_DGRGRAMCAST类,但使用Unicast地址和操作。因此,只有一个实例会收到该消息。
检查ace_wrappers/tests/multicast_test.cpp,以获取如何发送和接收多播的示例。
相关文章:
- C++应用程序 MySQL odbc 数据库连接错误:在引发"otl_tmpl_exception<>"实例后终止调用
- 在Visual Studio中单实例Qt应用程序版本5.11.1中,在所有其他窗口的顶部打开Qt MainWindow
- 当我们实例化Caffe2预测器时,应用程序被卡住了
- 跨平台方式,以防止打开应用程序的多个实例
- ACE在同一PC上具有多个应用程序实例 - 仅首先获取消息
- 我该如何验证给定类的每个实例都被应用程序终止所破坏
- c++单例类实例访问整个应用程序
- 使用boost组件实例化C++库类的Mono C#应用程序
- 如何在崩溃时管理Qt应用程序的单个实例
- 在 QT 中启动外部控制台应用程序的多个实例并捕获输出
- 如何在本地 Windows 网络上发现我的应用程序的所有其他实例
- 应用程序在 的协同创建实例期间挂起.基于 NET 的 COM 对象
- 如何在具有 DLL 的应用程序中实现单一实例
- 我将如何允许运行 TTS 应用程序的多个实例
- Qt中的单实例应用程序
- 向同一网络上的应用程序的所有其他实例发送消息
- Qt5:阻止应用程序的另一个实例不再有效...!
- 最大化qt中单个实例应用程序的已运行实例
- 在Windows(C++)中运行的应用程序实例中打开文件
- 对于单个实例应用程序,只允许使用单个窗口消息框