System.Win.ScktComp.TWinSocketStream.Read

提供: RAD Studio API Documentation
移動先: 案内検索

Delphi

function Read(var Buffer; Count: Longint): Longint; override;

C++

virtual int __fastcall Read(void *Buffer, int Count)/* overload */;
inline int __fastcall  Read(System::DynamicArray<System::Byte> Buffer, int Offset, int Count){ return System::Classes::TStream::Read(Buffer, Offset, Count); }
inline int __fastcall  Read(System::DynamicArray<System::Byte> &Buffer, int Count){ return System::Classes::TStream::Read(Buffer, Count); }

プロパティ

種類 可視性 ソース ユニット
function public
System.Win.ScktComp.pas
System.Win.ScktComp.hpp
System.Win.ScktComp TWinSocketStream

説明

Read は,ソケット接続から最大で Count で指定するバイト数を Buffer に読み出します。

Read メソッドを使用すると,転送されるバイト数が不明なときに,ソケット接続からデータを読み出すことができます。Buffer は,接続から読み出されるデータを格納するために割り当てられた Count のバイト数以上のバイト数でなければなりません。Read メソッドは実際に転送されたバイト数を返します(Count で要求された数よりも少ない場合があります)。

ソケット接続が極度に低速で,読み出し処理が TimeOut ミリ秒(TimeOut プロパティ値)経過しても完了しないと,Read メソッドは 0 を返すことがあります。これにより,ソケット接続で問題が生じても Read メソッドが無期限に待ち受け状態にならないことが保証されます。

接続速度の遅さのために Read メソッドがタイムアウトするのを防ぐには,Count の値を大きくして呼び出し回数を少なくするのではなく,Count を小さめの値に設定して Read を複数回呼び出すようにします。

Read メソッドを呼び出す前に,ソケット接続がデータ送信の用意を整えておくようにするには,WaitForData メソッドを呼び出します。

ReadBuffer メソッドとは異なり,ソケット接続から Count で指定したバイト数のデータが読み出されなくても Read は例外を生成しません。

関連項目