問題タブ [ace]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票する
1 に答える
146 参照

boost - shared_ptr パズル

私は ACE フレームワークを使用していますが、それを参照せずに問題を説明しようと思います。

イベント ハンドラー (ACE_Event_Handler から派生したクラス) があります。イベント ハンドラーへの参照は、shared_ptr のマップ内の一部のマネージャー クラスによって保持されます。

ある時点で私はしたい:

  1. マネージャー マップからイベント ハンドラーを削除する
  2. イベント ハンドラのいくつかのメソッドは、イベント ハンドラへの行ポインタを保持する 3 番目のクラスによって呼び出される必要があります (ACE に精通している場合は、ACE Reactor によって呼び出される handle_close() です)。

問題は、順序 (1) と (2) が約束されていないことです。(1) が (2) の前に呼び出された場合、(2) はダングリング イベント ハンドラーで動作します。

そのため、(2) でデクリメントされるイベント ハンドラーへの参照を追加することを考えました。

それはどのように行うことができますか?イベント ハンドラへの参照をイベント ハンドラ自体から維持できますか (おそらく enable_shared_from_this を使用)。

ありがとう

0 投票する
4 に答える
1558 参照

c++ - リモート UDP マルチキャスト サービスに接続する

サービスが存在する IP アドレス (たとえば70.70.70.70)、接続するマルチキャスト グループ (たとえば224.25.25.25)、およびポート (たとえば2020) がある場合、リモート udp マルチキャストに接続するにはどうすればよいですか?

私は ACE フレームワークを使用しており、スニファーで224.0.0.2、グループに参加するために ACE が IGMP パケットを に送信していることがわかりますが、ホーム ルーター (チェックポイント) はそれをどう処理すればよいかわかりません。

0 投票する
1 に答える
1243 参照

c++ - ACE_DLL::いくつかの dll ファイルのオープンに失敗しました

私はこのエラーに非常に困惑しています。完全なエラー情報は次のとおりです。

TestFE.dll の ACE_DLL::open に失敗しました: エラー: 詳細についてはログを確認してください。サービスが見つかりません: MySvc

しかし、別の TestBE.dll を取得すると、正常に開始できます。

ところで: TestFE.dll の依存 dll ファイルが欠落していません。TestFE.dll を見つけるには、Windows の PATH が正しいです。TestBE.dll と TestFE.dll の間でプロジェクトのビルド オプションを比較しようとしましたが、何も見つかりませんでした。

ここで誰かが理由を理解するのを手伝ってくれますか? ありがとうございました。

0 投票する
1 に答える
599 参照

linux - ACE と非同期 UDP 通信

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

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

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

私はグーグルとこのサイトを何時間も何日も検索しましたが、誰もこの問題を抱えていないようです! 少なくとも私はそれを見つけることができません。

私が理解している限りでは、ACE は本当に成熟していて信頼できるので、今は本当にイライラしています。一部の人々はそれのデザインがとても好きですが。信頼性とリアルタイム性が求められる航空宇宙業界で使用されています。ACE が非同期をサポートしていないなんて信じられません。UDP通信および/または他の誰もそれを見つけられませんでした。

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

できれば ACE の専門家からのヒントやヒントはありますか? :-)

どうもありがとうございました

0 投票する
2 に答える
570 参照

c++ - select関数は内部的にtcpconnectを呼び出しますか?

コードシンペット:

私の質問は、非ブロックエラーのために接続が失敗し、selectが呼び出され、select return successと言うと、もう一度connectを呼び出すか、関数internal do connectを選択する必要がありますか?

0 投票する
3 に答える
1291 参照

c++ - ACE_SOCK_Dgram::open() と errno

既に開いている UDP ポートを開こうとすると、ACE_SOCK_Dgram::open() が失敗しました。予想通り、strace は bind() が失敗し、errno が EADDRINUSE に設定されていることを示しています。

どのようなエラーが発生したかを確認するために ACE_OS::last_error() を使用しましたが、更新されていません。

一般的なエラーではなく、ポートが既に使用されているという有益なエラーをユーザーに提供したいと思います。

おまけの質問 - ACE_OS::last_error() はいつ使用できますか?

TNX

0 投票する
1 に答える
994 参照

c++ - ACE Reactorは、中断されたシステムコールで終了します

ソケット接続を受け入れ、それらの接続で着信データをリッスンするACEリアクターがあります。反応器は専用のスレッドで動作します。これはスレッドのエントリ関数です。

たまにrun_reactor_event_loop-1で終了しerrno、理由が「システムコールの中断」であると報告します。どうすれば状況に対処できますか?私が知っていることから、2つのオプションがあります。もう一度呼び出すか、とを使用しrun_reactor_event_loopて中断された呼び出しを再度呼び出すように構成します。sigactionSA_RESTART

  1. run_reactor_event_loopもう一度電話しても大丈夫ですか?
  2. ACE_Reactor :: restartメソッドは何をしますか?ループを再開することになっているように見えますか?それは役に立ちますか?
  3. 電源を入れるのはどれくらい安全SA_RESTARTですか?たとえば、^ Cがアプリケーションを停止しないということですか?
  4. 状況を処理する他の方法はありますか?
0 投票する
2 に答える
2540 参照

c++ - ACE 6.0 (ネットワーク ライブラリ) をスタティックにビルドするには?

ACE は Visual Studio 用のソリューション ファイルを提供しており、静的および動的好みのソリューション ファイルがありました (ACE.sln および ACE_static.sln)。

彼らが 6.0 をリリースした後、static.sln はなくなりました。
理解できません。静的ソリューション ファイルを削除したのはなぜですか? 理由はありますか?
私は自分で静的ビルドの定義済みの値を入れています。とても迷惑です。

他に便利な方法はありますか?

0 投票する
2 に答える
1141 参照

c++ - ネットワークライブラリを使用した状態情報を含むTCPサーバー

私はオンラインターンベースのゲーム用のtcpサーバーを書いています。すでにphpソケットを使用してプロトタイプを作成しましたが、C++に移行したいと思います。私は人気のあるネットワークライブラリ(ASIO、ACE、POCO、LibEvent)を見てきましたが、現在、どれが私のニーズに最も適しているかは不明です。

1)接続は永続的(数分程度)であり、サーバーは100以上の同時接続を処理できる必要があります。

2)接続は、状態情報(ユーザーログイン情報)を維持できる必要があります。[私のphpプロトタイプは現在、各クライアントリクエストにログイン情報を含める必要があります]

3)オプションで、できればマルチスレッドですが、単一のプロセスです。接続ごとに1つのスレッドを使用するのではなく、開いているすべての接続で動作するスレッドの数を固定することをお勧めします。


私はPOCOのTCPServerまたはReactorフレームワークに傾倒していますが、それらが私の要件を満たしているかどうかは正確にはわかりません。Reactorはシングルスレッドであり、TCPServerは1:1のスレッド/接続を強制していると思います。私は正しいですか?


どちらの場合でも、ログイン情報を特定の接続に関連付けて、接続がランダムに出入りするという最も重要なタスクを実行する方法が正確にはわかりません。

0 投票する
1 に答える
69 参照

token - ACE_Remote_Mutex はどのように機能しますか?

「トークン」という名前の同じリモート ミューテックスを取得しようとする 2 つの小さなプログラムを作成しました。

どちらも次のデバッグ出力を取得しました。

ACE_Remote_Mutex は、Corba ブローカーのようなある種の「エージェント」でのみ機能しますか? コードを変更できますか?