data$, count, done = ReceiveData(id, mode, ...) data$, count, done = ReceiveData(id, #RECEIVEBYTES, maxbytes[, callback, userdata]) data$, count, done = ReceiveData(id, #RECEIVEALL[, untilterm, callback, userdata]) data$, count, done = ReceiveData(id, #RECEIVELINE[, callback, userdata])
OnConnect
benutzen,
welches Sie mit dem Befehl InstallEventHandler() installiert
haben.
Das zweite Argument legt fest, wie viele Daten Sie vom Absender erhalten möchten. Derzeit werden folgende Modi unterstützt:
#RECEIVEBYTES:
maxbytes
übergeben. ReceiveData()
erhält dann nie mehr Bytes als angegeben. Es kann jedoch vorkommen,
dass weniger Bytes zurückgegeben werden, falls nicht genügend
Daten vom Absender verfügbar sind. Die Anzahl der übermittelten
Bytes werden im zweiten Rückgabewert count
enthalten sein.
#RECEIVEALL:
untilterm
auf True
setzen, wird ReceiveData()
nichts zurückgegeben, bevor der Absender die Verbindung beendet,
so dass Sie alle Daten empfangen können, die ein Absender mit
nur einem einzigen Aufruf anbieten kann. Wenn untilterm
auf
False
gesetzt ist, gibt ReceiveData()
nur die aktuell verfügbaren
Daten zurück. Er wird nicht warten, bis weitere Daten ankommen,
aber er wird Ihnen sagen, ob mehr Daten zum Abrufen vorhanden
sein werden (im dritten Rückgabewert done
). Die Voreinstellung
für untilterm
ist True
, d.h. ReceiveData()
liest Daten, bis
der Absender die Verbindung beendet.
#RECEIVELINE:
data$
aufgenommen. Sie werden
aus dem Netzwerkpuffer gelesen, aber ReceiveData()
nicht zurückgegeben,
wenn Sie #RECEIVELINE
verwenden.
ReceiveData()
gibt drei Werte zurück: Der erste Rückgabewert
data$
ist eine Zeichenkette, die die Daten enthält, die vom Netzwerk
empfangen wurden, oder eine leere Zeichenfolge, wenn Sie eine
Callback-Funktion verwenden, um die Daten zu behandeln oder
keine Daten gelesen werden konnten. Bitte beachten Sie, dass
obwohl die Daten gelesen werden und als Zeichenkette zurückgegeben
werden, ist sie nicht auf Text beschränkt. Sie kann auch binäre
Daten enthalten, da die Zeichenketten von Hollywood Steuerzeichen
und das Nullzeichen gut verarbeiten können. Der zweite Rückgabewert
count
gibt an, wie viele Bytes aus dem Netzwerkpuffer gelesen
werden konnten. Ist dies 0, stehen derzeit keine Daten zur
Verfügung. Der dritte Rückgabewert done
ist nur sinnvoll,
wenn der Übertragungsmodus #RECEIVEALL
mit untilterm
auf
False
gesetzt wurde. In diesem Fall gibt der dritte Rückgabewert
an, wenn mehr Daten im Netzwerkpuffer vorhanden sind. Wenn
es mehr Daten zu lesen gibt, dann ist done
False
, sonst ist es True
.
Ab Hollywood 6.0 gibt es ein optionales Argument callback
,
mit dem Sie eine Callback-Funktion übergeben können, die die
vom Server gelesenen Daten bearbeiten soll. Dies kann nützlich
sein, wenn Sie große Datenmengen empfangen müssen, die nicht
effizient in einer Zeichenkette gespeichert werden können.
Die Callback-Funktion könnte einfach die empfangenen Daten
in eine Datei schreiben. Beachten Sie, dass ReceiveData()
immer
eine leere Zeichenfolge in data$
zurückgibt, wenn Sie eine
Callback-Funktion angeben. Die Callback-Funktion wird mit einem
einzigen Argument aufgerufen: Eine Tabelle, die mehr Informationen
enthält. Hier eine Übersicht der Tabellenfelder, die initialisiert
werden, bevor ReceiveData()
Ihre Callback-Funktion ausführt:
Action:
#RECEIVEDATA_PACKET
Data:
Count:
Data
.
Total:
UserData:
userdata
übergeben haben.
Die Callback-Funktion des Typs #RECEIVEDATA_PACKET
sollte normalerweise
False
zurückgeben. Wenn sie True
zurückgibt, wird ReceiveData()
seine Operationen abbrechen.
Schließlich gibt es noch das optionale Argument userdata
.
Der Wert, den Sie hier angeben, wird bei jedem Aufruf an Ihre
Callback-Funktion übergeben. Dies ist sinnvoll, wenn Sie vermeiden
wollen, mit globalen Variablen zu arbeiten. Mit dem Argument
userdata
können Sie einfach Daten an Ihre Callback-Funktion
übergeben. Sie können einen Wert eines beliebigen Typs verwenden.
Zahlen, Zeichenketten, Tabellen und sogar Funktionen können
übergeben werden.
#RECEIVEALL
zusammen mit untilterm
auf False
gesetzt ist)