問題タブ [casyncsocket]

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 に答える
222 参照

c++ - std::packaged_task を使用して CAsyncSocket-Detach-socket タスクをキューに入れると、非静的 Attach が静的メソッドから呼び出されたときにコンパイル エラーが発生する

コードを実装しているので、ネットワーク接続が到着したら受け入れ、到着ソケットから切り離し、std::packaged_task タスクを作成し、そのタスクを deque コンテナーにキューに入れ、後でそれらのタスクをタスク スレッドで実行します。Bo Qian の YouTube レクチャー「C++ Threading #9: packaged_task」では、これを簡単に行う方法が説明されています。

私の StartDecode は非静的 Attach を呼び出そうとする静的メソッドであるため、私の場合、コードはコンパイルされません。std::bind を使用して「ソケット」をタスクにバインドするため、StartDecode は静的メソッドです。'socket' は通常 StartDecode メソッドに渡されますが、パッケージ化されたタスクの 'future' が適切に機能するためには、渡されたパラメーターを std::bind を使用して事前にバインドする必要があります。ただし、StartDecode が静的になると、静的ではない CAsyncSocket の Attach を呼び出すと、エラー C2352 が発生します。

静的 MyRxDecode::StartDecode から非静的 Attach メソッドを呼び出すにはどうすればよいですか? ソケットパラメーターを静的にせずにタスクにバインドする必要を回避する方法はありますか?

0 投票する
0 に答える
181 参照

c++ - ネットワーク外の PC で複数の IP アドレスが構成されている場合、CAsyncSocket Bind() が失敗する

複数の IP アドレスが構成されていて、ネットワーク外にある PC があります。

この PC で CAsyncSocket を使用して VC++ で開発されたサーバー ソフトウェアを実行しようとしています。しかし、Bind()このソフトウェアの機能は常にエラーで失敗しますWSAEADDRNOTAVAIL 10049

しかし、私が見つけたのは、次の場合にバインディングが正常に機能することです。

  • PCがネットワークに接続されている場合
  • PCに1つのIPアドレスが設定されている場合

ネットワーク接続と複数の IP 構成を使用したソケット バインドの依存関係を理解できません。これは CAsyncSocket の問題ですか、それともそのような状況でソケットを処理する方法はありますか?

編集:

これは、かなり単純なソケット作成 (明示的なバインディング) に使用するコードです。

上記のケースでは、同じコードが正常に実行されることに注意してください。