同じポートで送受信する必要のあるアプリがあります。これは、次の2つの場合に発生する可能性があります。
PCがリモートハードウェアと通信している場所。「送信者に返信」するため、データグラムは送信ポートを介してPCに返されます。
PCがテストとデモのために自身と通信している場合(ループバックモード)(テストアプリは、UDPを介して偽のデータをメインアプリにフィードします)。
これは、ループバックを達成しようとしたときにのみ失敗するようです。私がそれを機能させる唯一の方法は、レシーバーが最初にセットアップされていることを確認することです-私は保証できません。
上記の状況を確実に処理するためにUdpClientを実装する「正しい」方法を提案することで、誰かが私の検索を絞り込むのを手伝ってもらえますか?
(リモートハードウェアで確実に機能することがわかった唯一の解決策は、単一のUdpClientを双方向で使用することですが、その結果に影響を与える可能性のあるレガシーコードを使用しています。2つのUdpClientを使用してみました。ただし、お互いに足を踏み入れる-場合によっては、一方のクライアントが起動すると、もう一方のクライアントが接続できなくなります。ポート共有を許可するようにExclusiveAddressUse / ReuseAddressを設定すると、レシーバーが最初に開始)
編集
詳細に:
UDPを介して外部ハードウェアと通信します。私たちから通信を受信すると、送信元アドレスに応答するため、同じポートでメッセージを受信します。この部分は正常に機能しています。
ただし、ループバックを使用して外部ハードウェアをエミュレートしようとすると(つまり、「自分自身に」同じポートを介して送受信する場合)、送信を開始する前に受信を開始した場合にのみデータグラムを受信できます。THatは正常に機能しますが、送信してから受信しようとすると、データを受信できません。この場合、私が実際に送信しようとしているものは関係ありません。
だから私は2つの問題があります:
1)確実に機能するループバックを管理する方法。
2)現在正常に動作している外部通信を壊さずに(1)を行う方法!
1つまたは2つのUdpClientのあらゆる種類の組み合わせと、さまざまな設定を試したので(役に立たなかった)、UPDループバックをうまく機能させることができたのではないかと思っていました。私がすべての場合に働くことができる解決策。
これについて考える時間を取ってくれてありがとう...