好奇心から、ThreadBlockingタイプの場合、TServerSocket / TClientSocketのどのイベントが発生しますか?
1 に答える
TClientSocket
ブロッキングモードでは、OnRead
とを除くすべてのイベントが発生しOnWrite
ます。また、OnDisconnect
クライアントがソケットの自身の端を閉じた場合にのみ、リモート切断でイベントがトリガーされません。これらのソケット状態を検出するのは、データの読み取り/書き込みを行うコードの責任です。TWinSocketStream.WaitForRead()
可読性は、またはWinSockselect()
関数を介して検出されます。書き込み可能性は、WinSockselect()
関数を介してのみ検出されます。リモート切断は、最初に読み取り可能性を検出し、次に0TCustomWinSocket.ReceiveBuf()
をTWinSocketStream.Read()
返すことによって検出されます。
TServerSocket
ブロッキングモードでは、デフォルトですべてのイベントが発生します。TServerClientThread
ただし、仮想メソッドをオーバーライドするクラスを派生し、イベントClientExecute()
からそのクラスのインスタンスを返すと、イベントとイベントOnGetThread
が失われ、ブロッキングモードと同様のロジックを使用してこれらのソケット状態を検出する必要があります。OnRead
OnWrite
TClientSocket