Embarcadero RAD studio C++ builder XE を使用して C++ アプリケーションを作成しています。アプリケーションは、動的に作成されたTServerSocket
コンポーネントをブロッキング モードで使用します。TServerClientThread
カスタムClientExecute()
メソッドを提供する派生クラスを作成します。このクラスは、私が実装したTServerSocket
イベント ハンドラーを介して作成されます。、、およびOnGetThread
のイベント ハンドラーを割り当てます。スレッド クラス内では、class を使用してソケット接続から読み書きします。OnAccept
OnClientConnect
OnClientDisconnect
OnClientError
TWinSocketStream
を作成するカスタム作成クラス ( から派生TComponent
)を使用し、TServerSocket
割り当てるイベント ハンドラーはこのクラスのメンバー関数です。
OnAccept
とイベントが発生しますが、とイベントのOnClientDisconnect
どちらも発生しません。これは、このコンポーネントの正常な動作ですか? このコンポーネントについて読んだことはすべて、すべてのイベントがブロッキング モードで発生することを示唆しており、これらのイベントが発生しない理由がまったくわかりません。さらに私がしなければならないことはありますか、それともこれらのイベントはブロッキング モードでは機能しませんか? インスタンスを別の派生クラスのメンバーとして使用すると、問題が発生する可能性はありますか?OnClientConnect
OnClientError
TServerSocket
TServerSocket
TComponent