0

私のアプリケーションは、コマンドラインからのユーザーからのキーボード入力をリッスンするだけでなく、単一のループで同時にソケット上のデータをリッスンする必要があります。このアプリケーションは現在Linuxで実行されており、selectを使用して、select呼び出しに指定されたfd_set配列リストにstdinおよびネットワークソケットを追加することで、上記を簡単に実現できます。アクティビティに応じて、アプリはユーザー入力またはソケット上のデータのいずれかを処理できます。

現在、このアプリケーションをWindowsに移植していますが、Windowsについてはあまり詳しくありません。上記はWindowsでどのように達成できますか?それは、ソケットだけでなくstdinでのアクティビティをリッスンしています。どんなポインタでもありがたいです。

4

1 に答える 1

0

以下の方法で解決できました。

WaitForMultipleObjects() API を使用しました。この API では、STD_INPUT コンソール ハンドルのハンドルを使用します。また、関心のあるソケットごとに、WSACreateEvent を作成し、それを WaitForMultipleObjects() API に渡されるハンドルの配列に追加します。

WaitForMultipleObjects() API が返されると、アクティビティが検出されたハンドルを見つけて、それに応じて処理できます。

于 2011-08-17T09:59:35.060 に答える