t_rcv(3N) t_rcv(3N)
NAME
trcv - Daten oder Vorrangdaten über eine Verbindung empfangen
SYNTAX
#include <sys/tiuser.h>
int trcv(int fd, char *buf, unsigned nbytes, int *flags);
BESCHREIBUNG
Diese Funktion ist für den Empfang von normalen oder vorrangigen Daten
zuständig. fd kennzeichnet den lokalen Transportendpunkt, über den
Daten ankommen, buf zeigt auf einen Empfangspuffer, wo die Benutzerda-
ten abgelegt werden, und nbytes gibt die Größe des Empfangspuffers an.
flags ist bei der Rückkehr von trcv gesetzt und spezifiziert optio-
nale Flags, die unten beschrieben werden.
trcv arbeitet standardmäßig im synchronen Modus und wartet auf die
Ankunft weiterer Daten, falls im Augenblick keine Daten vorhanden
sind. Wenn jedoch ONDELAY oder ONONBLOCK gesetzt wurde (mittels
topen oder fcntl), arbeitet trcv im asynchronen Modus und schlägt
fehl, wenn keine Daten vorhanden sind (siehe unten bei TNODATA).
Wenn bei der Rückkehr TMORE in flags gesetzt worden ist, bedeutet
das, daß weitere Daten vorhanden sind und daß die aktuelle Transport-
dienst-Dateneinheit (TSDU) bzw. die vorrangige Dienstdateneinheit
(ETSDU) durch mehrere trcv-Aufrufe geholt werden muß. Jedes trcv mit
gesetztem TMORE-Flag heißt, daß ein weiterer trcv-Aufruf folgen muß,
um weitere Daten für die aktuelle TSDU zu bekommen. Das Ende einer
TSDU ist durch einen trcv-Aufruf feststellbar, bei dem das Flag
TMORE nicht gesetzt ist. Wenn der Transportanbieter das Konzept der
TSDU nicht anbietet, wie das im Argument info bei der Rückkehr von
topen oder tgetinfo angezeigt wird, ist die Belegung des Flags
TMORE nicht von Bedeutung und sollte ignoriert werden.
Wenn das Flag TEXPEDITED bei der Rückkehr in flags gesetzt ist, han-
delt es sich um Vorrangdaten. Wenn die Anzahl der Bytes der Vorrangda-
ten den Wert nbytes überschreitet, setzt trcv beim ersten Aufruf
TEXPEDITED und TMORE. Nachfolgende Aufrufe, um den restlichen Teil
der ETSDU zu bekommen, erhalten bei der Rückkehr TEXPEDITED gesetzt.
Das Ende einer ETSDU wird von trcv durch ein nichtgesetztes Flag
TMORE angezeigt.
Wenn Vorrangdaten ankommen, nachdem Teile einer TSDU empfangen wurden,
wird der Empfang des restlichen Teils der TSDU solange verzögert, bis
die ETSDU verarbeitet worden ist. Erst nachdem die vollständige ETSDU
eingegangen ist (TMORE nicht gesetzt), ist der restliche Teil der
TSDU für den Benutzer verfügbar.
Seite 1 Reliant UNIX 5.44 Gedruckt 11/98
t_rcv(3N) t_rcv(3N)
FEHLER
Im Fehlerfall wird terrno auf einen der folgenden Werte gesetzt:
TBADF Der angegebene Dateideskriptor verweist nicht auf
einen Transportendpunkt.
TNODATA ONDELAY oder ONONBLOCK wurde gesetzt, aber es sind
im Augenblick keine Daten von dem Transportanbieter
verfügbar.
TLOOK Auf diesem Transportendpunkt ist ein asynchrones
Ereignis aufgetreten, das sofortige Bearbeitung erfor-
dert.
TNOTSUPPORT Diese Funktion wird von dem darunterliegenden Trans-
portanbieter nicht angeboten.
TSYSERR Während der Ausführung dieser Funktion ist ein System-
fehler aufgetreten.
DIAGNOSE
Bei erfolgreicher Beendigung liefert trcv die Anzahl empfangener
Bytes zurück. Im Fehlerfall wird -1 zurückgegeben und terrno gesetzt,
um den Fehler anzuzeigen.
SIEHE AUCH
topen(3N), tsnd(3N).
Seite 2 Reliant UNIX 5.44 Gedruckt 11/98