を取得します。ACEは - のみ最初、私は複数のインスタンスが同じマシン上で実行され、彼らは同じポートを経由してUDPを介して互いに通信するアプリケーションを作成しようとしているメッセージ
私はそれが可能でなければならないことそれについての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
ああ、今では(12345、 "10.10.0.255")を送信用に使用し、もう1つを(12345、ACE_LOCALHOST)受信用に使用すると、すべてのメッセージが取得されます。 – MiroJanosik