System.Win.ScktComp.TWinSocketStream.Read

Aus RAD Studio API Documentation
Wechseln zu: Navigation, Suche

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); }

Eigenschaften

Typ Sichtbarkeit Quelle Unit Übergeordnet
function public
System.Win.ScktComp.pas
System.Win.ScktComp.hpp
System.Win.ScktComp TWinSocketStream

Beschreibung

Liest maximal so viele Bytes aus der Socket-Verbindung in einen Puffer (Buffer), wie mit Count vorgegeben.

Mit Read können Daten aus einer Socket-Verbindung gelesen werden, wenn die Anzahl der zu übertragenden Bytes unbekannt ist. Der Puffer muss mindestens so groß sein, dass die aus der Verbindung gelesene Anzahl von Daten (Parameter Count) darin Platz findet. Diese Anzahl wird zurückgegeben. Sie ist eventuell kleiner als der Wert von Count.

Read kann den Wert 0 zurückgeben, wenn die Socket-Verbindung extrem langsam arbeitet und die Leseoperation nicht nach TimeOut Millisekunden beendet ist. So wird verhindert, dass die Methode in einen undefinierten Zustand gerät, wenn Verbindungsprobleme bestehen.

Um eine Zeitüberschreitung bei einer langsamen Verbindung zu verhindern, empfiehlt es sich, den Wert von Count eher niedrig anzusetzen und die Methode Read dafür mehrmals aufzurufen, anstatt weniger Aufrufe mit großem Count-Wert auszuführen.

Mit der Methode WaitForData kann sichergestellt werden, dass die Socket-Verbindung sendebereit ist, bevor Read aufgerufen wird.

Im Gegensatz zur Methode ReadBuffer löst Read keine Exception aus, wenn die mit Count angeforderte Byte-Anzahl nicht gelesen werden konnte.

Siehe auch