Museum

Home

Lab Overview

Retrotechnology Articles

Online Manuals

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

Media Vault

Software Library

Restoration Projects

Artifacts Sought

Related Articles

poll(2)

select(3C)

recv(3N-xs)

recvfrom(3N-xs)

send(3N-xs)

sendmsg(3N-xs)

sendto(3N-xs)

shutdown(3N-xs)

socket(3N-xs)

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

NAME
     recvmsg - Eine Meldung von einem Socket empfangen

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

     #include <sys/socket.h>

     ssizet recvmsg(int socket, struct msghdr *message, int flags);

BESCHREIBUNG
     Die Funktion recvmsg 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.

     message      Zeigt auf eine msghdr-Struktur, die sowohl den Puffer zum
                  Speichern der Quelladresse als auch die Puffer für einge-
                  hende Meldungen enthält. Länge und Format der Adresse
                  sind von der Adreßfamilie des Sockets abhängig. Die Kom-
                  ponente msgflags wird bei der Eingabe zwar ignoriert,
                  kann bei der Ausgabe jedoch Werte von Bedeutung enthal-
                  ten.

     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):

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

                  MSGPEEK
                       Zeigt die eingehende Meldung an.

                  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.

     Die Funktion recvmsg empfängt Meldungen von nicht verbundenen und ver-
     bundenen Sockets und gibt die Länge der Meldung zurück.





Seite 1                      Reliant UNIX 5.44               Gedruckt 11/98

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

     Die Funktion recvmsg gibt die Gesamtlänge der Meldung zurück. 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 die angegebenen Puffer,
     und ist MSGPEEK im Argument flags nicht gesetzt, werden die über die
     Puffergröße hinausgehenden Byte gelöscht, und in der Komponente
     msgflags der msghdr-Struktur wird MSGTRUNC gesetzt. Bei Sockets auf
     STREAM-Basis, wie beispielsweise SOCKSTREAM, werden Meldungsgrenzen
     ignoriert. 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.

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

     In der msghdr-Struktur geben die Komponenten msgname und msgnamelen
     die Quelladresse an, wenn der Socket nicht verbunden ist. Ist der
     Socket verbunden, werden die Komponenten msgname und msgnamelen
     ignoriert. Die Komponente msgname kann ein Null-Zeiger sein, wenn
     keine Namen gewünscht oder benötigt werden. Die Komponenten msgiov
     und msgiovlen beschreiben die Scatter-/Gather-Bereiche.

     Bei erfolgreicher Ausführung enthält die Komponente msgflags des Mel-
     dungskopfes alle der folgenden Flags, die Bedingungen für die empfan-
     gene Meldung anzeigen. Die Flags sind bitweise über ein logisches OR
     verknüpft.

     MSGEOR         Das Satzende wurde erreicht (falls vom Protokoll
                     unterstützt).

     MSGOOB         Out-of-Band-Daten wurden empfangen.

     MSGTRUNC       Normale Daten wurden abgeschnitten.

     MSGCTRUNC      Steuerdaten wurden abgeschnitten.

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







Seite 2                      Reliant UNIX 5.44               Gedruckt 11/98

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

FEHLER
     Die Funktion recvmsg schlägt fehl, wenn eine der folgenden Bedingungen
     zutrifft:

     EBADF           Das Argument socket ist kein gültiger Dateideskriptor.

     ENOTSOCK        Das Argument socket verweist nicht auf einen Socket.

     EINVAL          Die Summe der Werte für iovlen überschreitet ssizet.

     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.

     EINTR           Die Funktion wurde durch ein Signal unterbrochen,
                     bevor Daten verfügbar waren.

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

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

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

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

     ECONNRESET      Eine Verbindung wurde von einem Peer geschlossen.

     Die Funktion recvmsg kann fehlschlagen, wenn eine der folgenden Bedin-
     gungen zutrifft:

     EINVAL          Die Komponente msgiovlen der msghdr-Struktur, auf die
                     msg zeigt, ist kleiner oder gleich 0 oder größer als
                     {IOVMAX}.

     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.




Seite 3                      Reliant UNIX 5.44               Gedruckt 11/98

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

     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.

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

SIEHE AUCH
     poll(2), select(3C), recv(3N-xs), recvfrom(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