0
我想创建应用程序,其中多个实例将运行在同一台机器上,他们将通过UDP通过相同的端口进行通信。与同一台PC上的多个应用程序实例的ACE - 只有第一个得到消息
我在StackOverflow上读到很多关于它应该是可能的线程。
虽然,当我打开从每个应用程序实例的连接我可以看到,每个实例发送消息,但只有第一个实例(如果第一闭合然后第二...)接收到的消息。
我正在使用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(*的ListenAddress)”然后我得到的错误,从应用程序的第一个实例代码ENODEV。
你好,我正试图做两个 - 发送消息,让多个接收器得到它+允许多个进程在同一个UDP端口上接收。出于测试目的,我只会将它发送给本地计算机,以测试它是否可以被多个进程接收。我会检查这个例子,谢谢。 – MiroJanosik
哦,所以现在当我用一个dgram(12345,“10.10.0.255”)发送,另一个用(12345,ACE_LOCALHOST)接收时,我得到所有的消息。 – MiroJanosik