System.Win.ScktComp.TWinSocketStream.Read
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 は例外を生成しません。