問題タブ [overlapped-io]

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 投票する
3 に答える
6057 参照

c++ - オーバーラップ I/O と呼ばれるのはなぜですか?

オーバーラップ I/O の使用方法に関するチュートリアルしか見つかりませんが、なぜそのように呼び出されるのかわかりません。

たとえば、ソケットから何かを読み取ってから、最初の読み取りが読み取ったバイトを返す前に別のものを読み取ることができるためですか?

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

c++ - オーバーラップ I/O はクライアント側でも使用されますか?

オーバーラップ I/O は、主に何千ものクライアントを処理できるようにするために、サーバー側で使用するために発明されたと思います。したがって、クライアント側で使用する理由はないと思います。私の仮定は正しいですか?

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

c++ - AcceptEx() または WSAAccept() を使用する必要がありますか?

オーバーラップ IO を使用しています。通常のaccept(). AcceptEx()よくわかりませんが、ブロックしないと思いますが、ブロックWSAAccept()します。WSAAccept()に似ていaccept()ますか?

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

c++ - GetQueuedCompletionStatus() が操作タイプを返さないのはなぜですか?

GetQueuedCompletionStatus()完了通知をデキューしますが、それがどのタイプの通知であるかは返しません (例: 読み取り通知、書き込み通知)。

どの操作を開始したかを追跡するのは私の責任です。たとえば、 を使用する場合、これがどの操作であるかを示すWSARecv()フラグを構造体に追加しOVERLAPPED(この場合は読み取り)、通知をデキューするときにこのフラグを読み取ります。 . GetQueuedCompletionStatus()操作の種類を返さない理由を知っている人はいますか?

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

c++ - 許容される未処理のオーバーラップ I/O 要求の最大数は?

重複した I/O のコンテキストでは、次のようなWSASend()エラー コードが返される可能性がWSAEWOULDBLOCKあります。

ソケットの重複: 未解決の重複した I/O 要求が多すぎます。

未処理のオーバーラップ I/O 要求の最大数が定義されているか、または使用可能なメモリ、Windows のバージョンなどの多くの基準に依存しているか。

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

c++ - オーバーラップ I/O について話すとき、コンテキスト情報は何を意味しますか?

のドキュメントではWSARecv()、次のように述べています。

lpCompletionRoutine が NULL でない場合、hEvent パラメータは無視され、アプリケーションがコンテキスト情報を完了ルーチンに渡すために使用できます。

「コンテキスト情報」とはどういう意味ですか? これは、通常、データ構造を各ソケットに関連付けることを意味すると思います。ソケット ハンドルや受信バッファーなどのメンバーを含めることができます。そのため、呼び出すときにWSARecv()、このデータ構造のインスタンスへのポインターを渡します。受信操作が完了したという通知を受け取ると、以前に渡したポインターを取得するので、どのソケットが開始されたかがわかります。受信操作、受信バッファとは何かなど。

私の理解は正しいですか?

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

c++ - C++ シリアル ライブラリの Win32 同期関数の使用?

Klein の C++ 用シリアル ライブラリの例を理解するのに苦労しています。このページの中ほどに、「Win32 同期オブジェクトの使用」というセクションがありますが、これを理解するのに苦労しています。 http://www.codeproject.com/Articles/992/Serial-library-for-C

その呼び出しから WaitEvent が実行するものは次のとおりです(すべてのチェックなどはありません):

2 つの質問: 1) シリアル クラスの WaitEvent メソッドと、その直後に Windows API の WaitForMultipleObjects の両方を使用するのはなぜですか? どちらも同じことをしているように見えます: COM ポートで何かが起こるのを待ちます。2) Stop イベントはどのように通知されますか? WaitForMultipleObjects は名前か何かでそれを認識しますか?

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

c++ - IOCP で WSASocket() を使用する必要がありますか?

IOCPアプリケーションを作成するときWSAAccept()の代わりに使用することをお勧めします。accept()しかしWSASocket()、オーバーラップされた I/O 関数に属しているのか、それとも別の Winsock 関数なのかはわかりません。

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

c# - Linux オーバーラップ I/O TCP ソケット サーバーが C# ASync クライアントに正しく応答しない

シンプルな機能のエコー ソケット クライアント/サーバーをコーディングしようとしています。クライアントを使用して同期サーバーを動作させることができましたが、今は非同期サーバーが必要です。

Microsoft のバージョンを使用している場合、正常に機能しています。ASyncサーバー:

https://msdn.microsoft.com/en-us/library/fx6588te(v=vs.110).aspx

Microsoft 非同期クライアント:

https://msdn.microsoft.com/en-us/library/bew39x2a(v=vs.110).aspx

私が今試みているのは、Microsoft Async ClientをLinux C++ Overlapped I/O Serverと通信させることです:

http://www.tutorialized.com/tutorial/Linux-C-Overlapped-Server-and-Client-Socket-Example/77220

ここで問題が始まります。接続が確立され、サーバーにメッセージを送信できます。サーバーはメッセージをエコー バックして応答しますが (デバッグおよびターミナル出力に従って)、Microsoft ASync クライアントはソケットで応答を取得しません。

非同期クライアントを重複 I/O サーバーに接続することは不可能ですか? サーバーからの応答がクライアントに届かない理由がわかりません。Microsoft ASync クライアントをデバッグすると、Receive次のコード行が関数に渡されないことがわかります。

receiveDone は ManualResetEvent です。

環境:

これは受信用のコールバック関数で、完了したら receiveDone を設定します。bytesRead0 を超えることはありません。:

とにかく、このコードは ASync サーバーに接続されているときに機能しますが、オーバーラップ I/O サーバーには接続されていません。そのため、実際には、オーバーラップ I/O サーバー コードで何を変更すればよいかを尋ねています。受けられる?

これは、Hello WorldASync クライアントから送信された場合のサーバーからの出力です。