2011-01-13 15 views
1

私は現在、ロボティクスのシミュレーション環境に取り組んでいます。 仮想ロボットと対話できるロボットは、ネットワーク接続を介して制御/監視することができます。 ネットワーク通信全体(もちろんスレッドなど)については、ACEライブラリを使用しています。 私が今問題にしているのは、非同期UDP部分が壊れているように思えることです。 ACEに付属のテストプログラム "test_udp_proactor -h localhost -p 55555"を実行すると、常にエラーコード89(宛先アドレスが必要です)が表示されます。 これまでのところ、これは私が試したものですが、何も助けなかっ:ACEと非同期UDP通信

  • をtest_udp_proactorのコードを変更するACE
  • の異なる/新しいバージョンを再コンパイル、環境を変更する同様のプログラム
  • (32bit版と異なるPCを再作成CPUとUbuntu 9.10)

同期方式を使用すると、すべて正常に動作するので、ネットワークハードウェア/ソフトウェアにエラーはありません。

Googleとこのサイトを数時間で検索しましたが、他に誰もこの問題がないようです。少なくとも私はそれを見つけることができません。

私はそれを理解する限り、ACEは本当に成熟しており、信頼性が高いので、今は本当に不満です。一部の人々はそれをとても気に入っています。 航空宇宙業界では、信頼性とリアルタイム性が欠かせません。 ACEがasynchをサポートしていないとは思えません。 UDP通信や他の誰もそれを見つけ出しませんでした。

誰かがこの動作を確認するためにtest_udp_proactorを使って簡単なテストを実行できますか? リアルタイム対応のシステムを使用する必要があるため、Windowsはオプションではありません。

他のヒントやヒントは、ACE-gurusの方が良いですか? :-)

ありがとうございました

+0

OKもう少し調べていますが、開発者サイト(http://lse.sourceforge.net/io/aio.html)によると、ソケット上のaioは実際には実装されていません。 UDPソケットに関しては実装が実際にはバグであることも読んでいましたが、サイトへのリンクをもう見つけられません:-(実際の利得がないためスレッドとブロック同期アプローチを使用することを選択しました – siddian

答えて

0

システムコールレベルでの問題を見てみてください。 straceを使用して、どのシステムコールと値がカーネルに送られているのか、そしてそれらのシステムコールが返すエラーコードを確認してください。

すぐに問題が発生する場合があります。

+0

あなたの返信をありがとう 私はaioライブラリの深みに突っ込んできたいと思っています; - 私は本当に、 )、残念ながら私は本当にそれを行う時間がありません。シミュレーションの他の部分はまだ実装する必要があります。そのため、スレッドを使用して、後でそのスレッドを処理することにしました。 – siddian

関連する問題