sendmsg(3N-xs) (X/OPEN SOCKETS) sendmsg(3N-xs)
NAME
sendmsg - Eine Meldung über einen Socket mit Hilfe einer Meldungs-
struktur senden
SYNTAX
cc [flag ...] file ... -lxnet [library ...]
#include <sys/socket.h>
ssizet sendmsg(int socket, const struct msghdr *message,
int flags);
BESCHREIBUNG
Die Funktion sendmsg sendet eine Meldung über einen verbindungs-
orientierten Socket oder einen nicht verbundenen Socket. Bei einem
Socket ohne Verbindung wird die Meldung an die durch msghdr angegebene
Adresse gesendet. Bei einem verbindungsorientierten Socket wird die
Zieladresse in msghdr ignoriert.
Für die Funktion sendmsg können folgende Argumente angegeben werden:
socket Gibt den Dateideskriptor für den Socket an.
message Zeigt auf eine msghdr-Struktur, die sowohl die Ziela-
dresse als auch die Puffer für die abgehende Meldung ent-
hält. Länge und Format der Adresse sind von der Adreßfa-
milie des Sockets abhängig. Die Komponente msgflags wird
ignoriert.
flags Gibt die Art der Meldungsübertragung an. Die Anwendung
kann 0 oder die folgenden Flags angeben:
MSGEOR Beendet einen Satz (falls vom Protokoll unter-
stützt).
MSGOOB Sendet Out-of-Band-Daten über Sockets, die
eine solche Übertragung unterstützen. Bedeu-
tung und Semantik von Out-of-Band-Daten sind
protokollspezifisch.
Eine erfolgreiche Übertragung eines Aufrufs sendmsg bedeutet noch
nicht, daß auch die Meldung übertragen wurde. Ein Return-Wert von -1
weist nur auf lokal gefundene Fehler hin.
Ist auf dem Socket, von dem aus gesendet wird, kein Platz für die zu
übertragende Meldung verfügbar, und ist im Dateideskriptor des Sockets
ONONBLOCK nicht gesetzt, blockiert sendmsg den Prozeß so lange, bis
Platz verfügbar ist. Ist auf dem Socket, von dem aus gesendet wird,
kein Platz für die zu übertragende Meldung verfügbar, und ist im
Dateideskriptor des Sockets ONONBLOCK gesetzt, schlägt sendmsg fehl.
Seite 1 Reliant UNIX 5.44 Gedruckt 11/98
sendmsg(3N-xs) (X/OPEN SOCKETS) sendmsg(3N-xs)
Wenn das Socket-Protokoll Broadcasting unterstützt und die angegebene
Adresse eine Broadcast-Adresse für das Socket-Protokoll ist, schlägt
sendmsg fehl, wenn die Option SOBROADCAST für den Socket nicht
gesetzt ist.
RÜCKGABEWERT
Bei erfolgreicher Ausführung gibt sendmsg die Anzahl der gesendeten
Byte zurück. Andernfalls wird -1 zurückgegeben und errno gesetzt, um
den Fehler anzuzeigen.
FEHLER
Die Funktion sendmsg schlägt fehl, wenn eine der folgenden Bedingungen
zutrifft:
EAFNOSUPPORT Adressen in der angegebenen Adreßfamilie können mit
diesem Socket nicht verwendet werden.
EBADF Das Argument socket ist kein gültiger Dateideskriptor.
ECONNRESET Eine Verbindung wurde von einem Peer geschlossen.
EINTR sendmsg wurde durch ein Signal unterbrochen, bevor
Daten übertragen werden konnten.
EINVAL Die Summe der Werte für iovlen überschreitet ssizet.
EMSGSIZE Die Meldung ist zu lang, um in einer einzigen Opera-
tion gesendet zu werden, wie für den Socket erforder-
lich.
ENOTCONN Der Socket ist verbindungsorientiert, aber nicht ver-
bunden.
ENOTSOCK Das Argument socket verweist nicht auf einen Socket.
EOPNOTSUPP Das Argument socket ist einem Socket zugeordnet, der
mindestens einen der in flags gesetzten Werte nicht
unterstützt.
EPIPE Der Socket ist nicht für Schreiben aktiviert, oder der
Socket ist verbindungsorientiert und der Peer ist
geschlossen oder für Lesen nicht aktiviert. Trifft
letzteres zu, und ist der Socket vom Typ SOCKSTREAM,
wird das Signal SIGPIPE für den aufrufenden Prozeß
generiert.
EWOULDBLOCK oder EAGAIN
Der Dateideskriptor des Sockets ist als ONONBLOCK
markiert und die angeforderte Operation würde blok-
kiert.
Seite 2 Reliant UNIX 5.44 Gedruckt 11/98
sendmsg(3N-xs) (X/OPEN SOCKETS) sendmsg(3N-xs)
Gehört der Socket zur Adreßfamilie AFUNIX, schlägt sendmsg fehl, wenn
eine der folgenden Bedingungen zutrifft:
EACCES Für eine Komponente der Pfadangabe wird die Suchbe-
rechtigung verweigert, oder der Schreibzugriff auf den
angegebenen Socket wird verweigert.
EIO Beim Lesen aus dem oder Schreiben in das Dateisystem
ist ein E/A-Fehler aufgetreten.
ELOOP Bei der Übersetzung des Pfadnamens in die Socket-
Adresse wurden zu viele symbolische Links gefunden.
ENAMETOOLONG Eine Komponente eines Pfadnamens überschreitet
{NAMEMAX} Zeichen, oder ein ganzer Pfadname ist län-
ger als {PATHMAX} Zeichen.
ENOENT Eine Komponente des Pfadnamens verweist nicht auf eine
vorhandene Datei, oder der Pfadname ist leer.
ENOTDIR Eine Komponente in der Pfadangabe in der Socket-
Adresse ist kein Verzeichnis.
Die Funktion sendmsg kann fehlschlagen, wenn eine der folgenden Bedin-
gungen zutrifft:
EDESTADDRREQ Der Socket ist nicht verbindungsorientiert, die Peer-
Adresse ist nicht gesetzt, und es wurde keine Ziela-
dresse angegeben.
EHOSTUNREACH Der Ziel-Host kann nicht erreicht werden (möglicher-
weise weil er heruntergefahren ist, oder weil er von
einem fernen Router nicht erreicht werden kann).
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.
EISCONN Eine Zieladresse wurde angegeben, und es handelt sich
um einen verbindungsorientierten Socket, der bereits
verbunden ist.
ENETDOWN Die lokale Schnittstelle zum Ziel ist nicht aktiviert.
ENETUNREACH Das Netz ist nicht erreichbar.
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
sendmsg(3N-xs) (X/OPEN SOCKETS) sendmsg(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.
Handelt es sich bei der Adreßfamilie des Sockets um AFUNIX, schlägt
sendmsg fehl, wenn eine der folgenden Bedingungen zutrifft:
ENAMETOOLONG Durch die Auflösung des Pfadnamens eines symbolischen
Links wird ein Zwischenergebnis erzeugt, dessen Länge
{PATHMAX} überschreitet.
ANWENDUNGSZWECK
Die Funktionen select und poll können verwendet werden, um festzustel-
len, wann weitere Daten gesendet werden können.
SIEHE AUCH
poll(2), select(3C), getsockopt(3N-xs), recv(3N-xs), recvfrom(3N-xs),
recvmsg(3N-xs), send(3N-xs), sendto(3N-xs), shutdown(3N-xs),
socket(3N-xs).
Seite 4 Reliant UNIX 5.44 Gedruckt 11/98