UDPを介して20個のカスタムハードウェアボックスからデータを受信するPCプログラムがあります。これらのボックスのそれぞれは、継続的にUDPメッセージをPC上の単一のUDPソケットに送信します。メッセージはすべて10〜150バイトのデータを含み、各ユニットは12秒で約20のメッセージを送信します。UDPメッセージの処理を改善する
テストでは、一部のメッセージがPCによって見逃されていることが示されています。ネットワーク上のボックスが少なくなれば、見逃したメッセージが少なくなります。
長期的な解決策は、データをハードウェアにバッファリングし、PCがTCPを介して必要なデータを取得するようにすることですが、解決策が導入されるまで短期間で欠落メッセージの問題を解決/最小化する必要があります。アイデアは、次のとおりです。 - 伝送 前に、不要なメッセージをフィルタリング - - PC アップグレードにハードウェアに別々のUDPメッセージを組み合わせて単一の大きな1 - 私が探している
をメッセージを受信するためにPCで複数のソケットを使用してこれらのアイデアへのフィードバック、欠落した可能性のあるもの
受信プログラムは、Indy9を実行するC++ Builderプログラムです。
ネットワーク上に他のトラフィックはありません。プライベートLANです。 私はネットワークの負荷が高くないことに同意します - それは 'バースト的ですが、12の境界で送信された12個のメッセージのバンドルです。私の推測では、複数のボックスからのメッセージバーストが一緒に発生しており、結果としてPCには見られないということです。 – IanH
私は彼らがそうでないと思っています(これを同期するのは非常に難しいでしょう)。私はネットワーク設定、スイッチ/ハブなどを調査します。これらのマシンはどのようなプラットフォームで動作していますか? – Toad
これらのボックスはカスタムハードウェアで、LWiPスタックを実行します。ネットワーク上の他のデバイスは、スイッチ(管理されていない10/100)とPCだけです。同期化は、20個のボックスの同時スイッチオンのアーチファクトであり得る。 – IanH