|
Beschreibung
Mit der Funktion t_rcv() kann der Transportbenutzer über eine bestehende Verbindung Daten empfangen.
Der Parameter fd identifiziert den lokalen Transportendpunkt, über den die Daten empfangen werden.
buf zeigt auf einen Empfangspuffer, in dem t_rcv() die eintreffenden Benutzerdaten ablegt.
Mit nbytes spezifiziert der Benutzer die Länge dieses Empfangspuffers.
Der Parameter flags wird nicht unterstützt.
Im Standardfall arbeitet t_rcv() im synchronen Modus, d.h. t_rcv() wartet auf die Ankunft weiterer Daten und blockiert, falls im Augenblick keine Daten verfügbar sind.
Wenn jedoch zuvor mit t_open() oder der POSIX-Funktion fcntl() für den durch fd spezifizierten Transportendpunkt O_NDELAY oder O_NONBLOCK gesetzt wurde, arbeitet t_rcv() im asynchronen Modus und beendet sich mit Fehler, falls keine Daten vorhanden sind. Dabei liefert t_rcv() den Returnwert -1 zurück und setzt t_errno auf TNODATA.
Returnwert
Nach erfolgreicher Ausführung liefert t_rcv() die Anzahl empfangener Bytes zurück.
Im Fehlerfall wird -1 zurückgegeben und t_errno gesetzt, um den Fehler anzuzeigen.
Fehler
TBADF
Der angegebene Dateideskriptor verweist nicht auf einen Transportendpunkt.
TLOOK
Auf dem durch fd übergebenen Transportendpunkt ist ein asynchrones Ereignis eingetreten und erfordert sofortige Bearbeitung.
TNODATA
O_NDELAY oder O_NONBLOCK ist gesetzt worden, aber es sind zurzeit keine Daten vom Transportanbieter verfügbar.
TNOTSUPPORT
Diese Funktion wird vom darunter liegenden Transportanbieter nicht unterstützt.
TOUTSTATE
Innerhalb einer Sequenz von XTI-Funktionsaufrufen für den Transportendpunkt fd wurde die Funktion an der falschen Stelle aufgerufen.
TSYSERR
Während der Ausführung dieser Funktion ist ein Systemfehler aufgetreten.