t_rcvudata(3N) t_rcvudata(3N)
NAME
trcvudata - Dateneinheit empfangen
SYNTAX
#include <sys/tiuser.h>
int trcvudata(int fd, struct tunitdata *unitdata, int *flags);
BESCHREIBUNG
Diese Funktion wird im verbindungslosen Dienst verwendet, um eine
Dateneinheit von einem anderen Benutzer zu empfangen. fd kennzeichnet
den lokalen Transportendpunkt, über den die Daten empfangen werden,
unitdata enthält Information, die mit der empfangenen Dateneinheit zu
tun hat. flags wird bei der Rückkehr gesetzt, um anzuzeigen, ob die
ganze Dateneinheit empfangen wurde. unitdata zeigt auf eine Struktur
tunitdata, die die folgenden Elemente enthält:
struct netbuf addr;
struct netbuf opt;
struct netbuf udata;
Das Feld maxlen von addr, opt und udata muß gesetzt sein, bevor die
Funktion aufgerufen wird, um die maximale Puffergröße festzulegen.
Bei der Rückkehr des Aufrufs gibt addr die Protokolladresse des Sen-
ders an, opt kennzeichnet protokollspezifische Optionen, die mit die-
ser Dateneinheit verbunden sind, und udata enthält die empfangenen
Benutzerdaten.
Als Standard arbeitet trcvudata im synchronen Modus und wartet auf
die Ankunft einer Dateneinheit, falls augenblicklich keine vorhanden
ist. Wenn jedoch ONDELAY oder ONONBLOCK gesetzt ist (mittels topen
oder fcntl), arbeitet trcvudata im asynchronen Modus und schlägt
fehl, wenn keine Dateneinheiten vorhanden sind.
Wenn der im Feld udata von unitdata definierte Puffer nicht genügend
groß ist, um die aktuelle Dateneinheit aufnehmen zu können, wird der
Puffer gefüllt und bei der Rückkehr in flags das Flag TMORE gesetzt,
um anzuzeigen, daß ein weiterer trcvudata-Aufruf nötig ist, um den
Rest der Dateneinheit zu empfangen. Nachfolgende Aufrufe von
trcvudata liefern für die Länge der Adresse und der Optionen zurück,
bis die vollständige Dateneinheit empfangen wurde.
FEHLER
Im Fehlerfall wird terrno auf einen der folgenen Werte gesetzt:
TBADF Der angegebene Dateideskriptor verweist nicht auf
einen Transportendpunkt.
TNODATA ONDELAY oder ONONBLOCK wurde gesetzt, aber es sind
augenblicklich keine Dateneinheiten von der Transport-
vorrichtung verfügbar.
Seite 1 Reliant UNIX 5.44 Gedruckt 11/98
t_rcvudata(3N) t_rcvudata(3N)
TBUFOVFLW Die Anzahl Bytes, die für die ankommende Protokoll-
adresse oder die Optionen angelegt wurde ist nicht
ausreichend, um die Information zu speichern. Die
Information, die in unitdata zurückzuliefern ist, wird
nicht berücksichtigt.
TLOOK Auf diesem Transportendpunkt ist ein asynchrones
Ereignis aufgetreten, das sofortige Bearbeitung erfor-
dert.
TNOTSUPPORT Diese Funktion wird von der darunterliegenden Trans-
portvorrichtung nicht unterstützt.
TSYSERR Während der Ausführung dieser Funktion ist ein System-
fehler aufgetreten.
DIAGNOSE
trcvudata liefert im Erfolgsfall 0 zurück. Im Fehlerfall wird -1
zurückgeliefert und terrno gesetzt, um den Fehler anzuzeigen.
SIEHE AUCH
trcvuderr(3N), tsndudata(3N).
Seite 2 Reliant UNIX 5.44 Gedruckt 11/98