2011-08-08 11 views
0

私のアプリケーションは、コマンドラインからユーザからのキーボード入力をリッスンするだけでなく、ソケット上のデータも同時に1つのループでリッスンする必要があります。このアプリケーションは現在linux上で動作していますので、select呼び出しに与えられたfd_set配列リストにstdinとnetworkソケットを選択して追加することで簡単に上記を達成することができます。アクティビティに応じて、アプリケーションはユーザー入力またはソケット上のデータを処理できます。Windowsはソケットとコマンドライン入力を同時に受信します

今、私はこのアプリケーションをWindowsに移植していますが、私はWindowsに詳しくはありません。上記はどのようにWindowsで達成できますか?それは、ソケットと同様に標準入力での活動を聞いています。任意のポインタが高く評価されました。

+0

私はこれを次のように解決できました。 WaitForMultipleObjects()APIを使用しました。このAPIの場合は、STD_INPUTコンソールハンドルのハンドルを使用します。興味のある各ソケットについて、WSACreateEventを作成し、WaitForMultipleObjects()APIに渡されたハンドルの配列に追加します。 – sthustfo

答えて

0

私はこれを次のように解決できました。

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

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

関連する問題