Museum

Home

Lab Overview

Retrotechnology Articles

Online Manuals

⇒ recvfrom.xs(3N-xs) — Reliant UNIX 5.44c4

Media Vault

Software Library

Restoration Projects

Artifacts Sought

Related Articles

poll(2)

read(2)

write(2)

select(3C)

recv(3N-xs)

recvmsg(3N-xs)

send(3N-xs)

sendmsg(3N-xs)

sendto(3N-xs)

shutdown(3N-xs)

socket(3N-xs)

recvfrom(3N-xs)               (X/OPEN SOCKETS)              recvfrom(3N-xs)

NAME
     recvfrom - Eine Meldung von einem Socket empfangen

SYNTAX
     cc [flag ...] file ... -lxnet [library ...]

     #include <sys/socket.h>

     ssizet recvfrom(int socket, void *buffer, sizet length,
             int flags, struct sockaddr *address, sizet *addresslen);

BESCHREIBUNG
     Die Funktion recvfrom empfängt eine Meldung von einem verbindungs-
     orientierten Socket oder einem nicht verbundenen Socket. Sie wird nor-
     malerweise mit Sockets ohne Verbindung verwendet, da sie der Anwendung
     erlaubt, die Quelladresse der empfangenen Daten abzurufen.

     Für die Funktion können folgende Argumente angegeben werden:

     socket       Gibt den Dateideskriptor des Sockets an.

     buffer       Zeigt auf den Puffer, in dem die Meldung gespeichert wer-
                  den soll.

     length       Gibt die Länge des Puffers (in Byte) an, auf den das
                  Argument buffer zeigt.

     flags        Gibt die Art des Meldungsempfangs an. Die Werte dieses
                  Arguments werden durch logisches Verbinden der folgenden
                  Werte über OR gebildet (es kann auch kein Wert angegeben
                  werden):

                  MSGPEEK
                       Zeigt eine eingehende Meldung an. Die Daten werden
                       jedoch als ungelesen behandelt und die nächste Funk-
                       tion recvfrom oder eine ähnliche Funktion gibt diese
                       Daten auch weiterhin zurück.

                  MSGOOB
                       Fordert Out-of-Band-Daten an. Bedeutung und Semantik
                       von Out-of-Band-Daten sind protokollspezifisch.

                  MSGWAITALL
                       Fordert an, daß die Funktion so lange blockiert
                       wird, bis die gesamte angeforderte Datenmenge
                       zurückgegeben werden kann. Die Funktion kann eine
                       geringere Datenmenge zurückgeben, wenn ein Signal
                       aufgefangen wird, die Verbindung beendet wird, oder
                       ein Fehler für den Socket ansteht.






Seite 1                      Reliant UNIX 5.44               Gedruckt 11/98

recvfrom(3N-xs)               (X/OPEN SOCKETS)              recvfrom(3N-xs)

     address      Ein Null-Zeiger oder ein Zeiger auf eine sockaddr-
                  Struktur, in der die Sendeadresse gespeichert werden
                  soll. Länge und Format der Adresse sind von der Adreßfa-
                  milie des Sockets abhängig.

     addresslen  Gibt die Länge der sockaddr-Struktur an, auf die das
                  Argument address zeigt.

     Die Funktion recvfrom gibt die Länge der Meldung zurück, die in den
     durch das Argument buffer angegebenen Puffer geschrieben wird. Bei
     Sockets auf Meldungsbasis wie beispielsweise SOCKDGRAM und
     SOCKSEQPACKET muß die gesamte Meldung in einer einzigen Operation
     gelesen werden. Ist eine Meldung zu lang für den entsprechenden Puf-
     fer, und ist MSGPEEK im Argument flags nicht gesetzt, werden die über
     die Puffergröße hinausgehenden Byte gelöscht. Bei Sockets auf STREAM-
     Basis, wie beispielsweise SOCKSTREAM, werden Meldungsgrenzen igno-
     riert. In diesem Fall werden die Daten an den Benutzer ausgegeben,
     sobald sie verfügbar sind, und es werden keine Daten gelöscht.

     Wenn das Flag MSGWAITALL nicht gesetzt ist, werden nur Daten bis zum
     Ende der ersten Meldung ausgegeben.

     Nicht alle Protokolle stellen die Quelladresse für Meldungen zur Ver-
     fügung. Ist das Argument address kein Null-Zeiger und stellt das Pro-
     tokoll die Quelldaresse der Meldungen zur Verfügung, wird die Quella-
     dresse der empfangenen Meldung in der sockaddr-Struktur gespeichert,
     auf die das Argument address zeigt, und die Länge dieser Adresse in
     dem Objekt gespeichert, auf das das Argument addresslen zeigt.

     Überschreitet die tatsächliche Länge der Adresse die Länge der angege-
     benen sockaddr-Struktur, wird die gespeicherte Adresse abgeschnitten.

     Ist das Argument address kein Null-Zeiger und stellt das Protokoll
     keine Quelladressen der Meldungen zur Verfügung, wird der in dem
     Objekt gespeicherte Wert, auf das address zeigt, nicht näher spezifi-
     ziert.

     Wenn am Socket keine Meldungen verfügbar sind und ONONBLOCK im Datei-
     deskriptor des Sockets nicht gesetzt ist, blockiert recvfrom den Pro-
     zeß so lange, bis eine Meldung eingeht. Wenn am Socket keine Meldungen
     verfügbar sind und ONONBLOCK im Dateideskriptor des Sockets gesetzt
     ist, schlägt recvfrom fehl und setzt errno auf EWOULDBLOCK oder
     EAGAIN.

RÜCKGABEWERT
     Bei erfolgreicher Ausführung gibt recvfrom die Länge der Meldung in
     Byte zurück. Wenn keine zu empfangenden Meldungen verfügbar sind und
     der Peer ordnungsgemäß heruntergefahren wurde, gibt recvfrom 0 zurück.
     Andernfalls wird -1 zurückgegeben und errno gesetzt, um den Fehler
     anzuzeigen.




Seite 2                      Reliant UNIX 5.44               Gedruckt 11/98

recvfrom(3N-xs)               (X/OPEN SOCKETS)              recvfrom(3N-xs)

FEHLER
     Die Funktion recvfrom schlägt fehl, wenn eine der folgenden Bedingun-
     gen zutrifft:

     EBADF           Das Argument socket ist kein gültiger Dateideskriptor.

     ECONNRESET      Eine Verbindung wurde durch einen Peer geschlossen.

     EINTR           Die Funktion recvfrom wurde durch ein Signal unterbro-
                     chen, bevor Daten verfügbar waren.

     EINVAL          Das Flag MSGOOB ist gesetzt und keine Out-of-Band-
                     Daten sind verfügbar.

     ENOTCONN        Es wird versucht, Daten auf einem verbindungs-
                     orientierten Socket zu empfangen, der nicht verbunden
                     ist.

     ENOTSOCK        Das Argument socket verweist nicht auf einen Socket.

     EOPNOTSUPP      Die angegebenen Flags werden für diesen Socket-Typ
                     nicht unterstützt.

     ETIMEDOUT       Die für die Verbindung verfügbare Zeit ist während des
                     Verbindungsaufbaus abgelaufen, oder bei einer aktiven
                     Verbindung wurde die Übertragungszeit überschritten.

     EWOULDBLOCK oder EAGAIN
                     Der Dateideskriptor des Sockets ist als ONONBLOCK
                     markiert, und es stehen keine Daten für den Empfang
                     an; oder MSGOOB ist gesetzt, und es sind keine Out-
                     of-Band-Daten verfügbar, und entweder der Dateide-
                     skriptor des Sockets ist als ONONBLOCK markiert, oder
                     der Socket unterstützt kein Blockieren, um auf Out-
                     of-Band-Daten zu warten.

     Die Funktion recvfrom kann fehlschlagen, wenn eine der folgenden
     Bedingungen zutrifft:

     EIO             Beim Lesen aus dem oder Schreiben in das Dateisystem
                     ist ein E/A-Fehler aufgetreten.

     ENOBUFS         Die im System verfügbaren Ressourcen reichen für die
                     Ausführung der Operation nicht aus.

     ENOMEM          Der verfügbare Speicher reicht für die Anforderung
                     nicht aus.

     ENOSR           Die verfügbaren STREAMS-Ressourcen reichen für die
                     Ausführung der Operation nicht aus.




Seite 3                      Reliant UNIX 5.44               Gedruckt 11/98

recvfrom(3N-xs)               (X/OPEN SOCKETS)              recvfrom(3N-xs)

ANWENDUNGSZWECK
     Die Funktionen select und poll können verwendet werden, um festzustel-
     len, wann Daten für den Empfang vorliegen.

SIEHE AUCH
     poll(2), read(2), write(2), select(3C), recv(3N-xs), recvmsg(3N-xs),
     send(3N-xs), sendmsg(3N-xs), sendto(3N-xs), shutdown(3N-xs),
     socket(3N-xs).














































Seite 4                      Reliant UNIX 5.44               Gedruckt 11/98

Typewritten Software • bear@typewritten.org • Edmonds, WA 98026