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