問題タブ [wsaasyncselect]

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

c# - C# で WinAPI から WSAAsyncSelect を使用するには?

.NET の BeginRead、EndRead にうんざりしています。Delphi/C++ で使用していた方法で WSAAsyncSelect を使用したいです。

そのイベントをC#で設定することは可能ですか?

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

winapi - WSAAsyncSelect を適切に使用するには?

私はここで WSAAsyncSelect と NET についてたくさんの質問をしました。数か月前、私は報奨金に 500 担当者を費やし、自分で答えました (ラッパーを作成しました)。最終的に、フレームワークの winsock に慣れました。

今日、私はアンマネージ言語について質問しています。悪い点は、ソケットを使って物事を行うフレームワークの方法を見逃していることです.私は自分のプロジェクトを Delphi で書いていますが、C のような言語を理解しているので問題ありません。私は自然なものが大好きなので、純粋なコードのみを提案しないでください。:)

別の非表示フォームを作成し、そこにメッセージ ループを設定して、AsyncSelect を適切に使用することをお勧めします。

さて、私の質問は簡単です:私は自分の人生を楽にするために書いたwinsock関数全体をその隠しフォーム内に配置し、WSaAsyncSelectをそのハンドルで設定しました.メッセージループもそこにありますが、私は子クラスを書きました(多くのクラス、巨大なコード)、親クラスはその隠しフォームです。

WSAAsyncSelect はスレッドセーフですか? これは物事を遅くしますか(私がクラスで行ったこと)?

メッセージ ループの外側にスレッドを作成する必要がありますか?

AsyncSelect を適切に使用するためのその他のヒントをいただければ幸いです。

編集:誤解を避けるために、私は AsyncSelect() について直接尋ねています。私が取り組んでいるプロジェクトには、2 つのサーバーと 1 つのクライアントが必要ですが、その呼び出しでうまく処理できると思います。

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

c++ - 無限バッファなしの Winsock WSAAsyncSelect 送信

これは、特定のコードに関する質問というよりも、設計に関する質問です。明らかなことを見逃していると確信しています。別の目が必要なだけです。

私はWSAAsyncSelectに基づいてマルチクライアントサーバーを作成しています.各接続は、関連する設定やバッファなどを含む、作成した接続クラスのオブジェクトになります.

私の質問は FD_WRITE に関するものです。それがどのように動作するかは理解しています。接続が確立された直後に 1 つの FD_WRITE が送信されます。その後、WSAEWOULDBLOCK が受信されるまで送信する必要があります。受信した時点で、送信するために残っているものをバッファに格納し、再度送信してもよいというメッセージが表示されるのを待ちます。

これは私が問題を抱えているところです.各接続オブジェクト内でこの保持バッファをどのくらいの大きさにしますか? 新しい FD_WRITE が受信されるまでの時間は不明です。この期間中に大量のデータを送信しようとして、常に発信バッファーに追加されている可能性があります。バッファーを動的にすると、何らかの理由で send() を実行してバッファーを削減できない場合、メモリ使用量が制御不能になる可能性があります。

だから私の質問は、一般的にこの状況をどのように処理しますか? winsock が使用するネットワーク バッファ自体について話しているわけではありませんが、送信を「キューに入れる」ために使用された私自身の作成の 1 つに注意してください。

私はそれを十分に説明したいと思います、ありがとう!

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

c - WM_SOCKET...FD_READが応答していません

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

delphi - Delphi wsaasyncselecy が Windows サービス アプリケーションで動作しない

Winsockでサービスアプリを書いています。非同期ソケットが必要です。TThread in Execute には、サンプル コードがあります。

これは機能しません:

理由はわかりません。私のサービスはこのacccept()でブロックされています。接続すると、ループが一度実行され、次にブロックされます。プレーンアプリケーションでコードをチェックしましたが、すべて問題ありません。

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

c++ - 1 サーバー n クライアント ソケット c++ mfc アプリケーションでデータのクライアントを更新する

mfcで簡単なチェックログインプログラムを作成しています。WSAAsyncselect 関数を使用して非ブロッキング ソケットを作成しています。誰かがログインするたびに、サーバーは現在のすべてのクライアントに「ユーザー x がログインしています」というメッセージを送り返し、メッセージ ログにそのメッセージを表示します。

通常、データをサーバーに送信した後、WSAAsyncselect 関数を呼び出すボタンからのみ値を更新できます。例えば

サーバー上で、私はこれを持っています

サーバーがこれらのクライアントにデータを送信した後、データを自動的に更新する方法があります