sendto(3N-xs) (X/OPEN SOCKETS) sendto(3N-xs)
NAME
sendto - Eine Meldung über einen Socket senden
SYNTAX
cc [flag ...] file ... -lxnet [library ...]
#include <sys/socket.h>
ssizet sendto(int socket, const void *message, sizet length,
int flags, const struct sockaddr *destaddr, sizet destlen);
BESCHREIBUNG
Die Funktion sendto sendet eine Meldung über einen verbindungs-
orientierten Socket oder einen nicht verbundenen Socket. Bei einem
Socket ohne Verbindung wird die Meldung an die durch destaddr angege-
bene Adresse gesendet. Bei einem verbindungsorientierten Socket wird
destaddr ignoriert.
Für die Funktion sendto können folgende Argumente angegeben werden:
socket Gibt den Dateideskriptor für den Socket an.
message Zeigt auf den Puffer, der die zu sendende Meldung ent-
hält.
length Gibt die Größe der Meldung in Byte an.
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):
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.
destaddr Zeigt auf eine sockaddr-Struktur, die die Zieladresse
enthält. Länge und Format der Adresse sind von der Adreß-
familie des Sockets abhängig.
destlen Gibt die Länge der sockaddr-Struktur an, auf die das
Argument destaddr zeigt.
Seite 1 Reliant UNIX 5.44 Gedruckt 11/98
sendto(3N-xs) (X/OPEN SOCKETS) sendto(3N-xs)
Wenn das Socket-Protokoll Broadcasting unterstützt und die angegebene
Adresse eine Broadcast-Adresse für das Socket-Protokoll ist, schlägt
sendto fehl, wenn die Option SOBROADCAST für den Socket nicht gesetzt
ist.
Das Argument destaddr gibt die Adresse des Ziels an. Das Argument
length gibt die Länge der Meldung an.
Eine erfolgreiche Ausführung eines Aufrufs an sendto 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 sendto 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 sendto fehl.
RÜCKGABEWERT
Bei erfolgreicher Ausführung gibt sendto die Anzahl der gesendeten
Byte zurück. Andernfalls wird -1 zurückgegeben und errno gesetzt, um
den Fehler anzuzeigen.
FEHLER
Die Funktion sendto 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 sendto wurde durch ein Signal unterbrochen, bevor
Daten übertragen werden konnten.
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.
Seite 2 Reliant UNIX 5.44 Gedruckt 11/98
sendto(3N-xs) (X/OPEN SOCKETS) sendto(3N-xs)
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.
Gehört der Socket zur Adreßfamilie AFUNIX, schlägt sendto 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 Das Argument destlen ist keine gültige Länge für die
Adreßfamilie.
EIO Beim Lesen aus dem oder Schreiben in das Dateisystem
ist ein E/A-Fehler aufgetreten.
Seite 3 Reliant UNIX 5.44 Gedruckt 11/98
sendto(3N-xs) (X/OPEN SOCKETS) sendto(3N-xs)
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.
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, kann
sendto fehlschlagen, 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), recv(3N-xs), recvfrom(3N-xs),
recvmsg(3N-xs), send(3N-xs), sendmsg(3N-xs), setsockopt(3N-xs),
shutdown(3N-xs), socket(3N-xs).
Seite 4 Reliant UNIX 5.44 Gedruckt 11/98