sendto-Subroutine
Zweck
Sendet Nachrichten über ein Socket.
Bibliothek
Standard-C-Bibliothek (libc.a)
Syntax
Beschreibung
Die Subroutine Sendto ermöglicht einem Anwendungsprogramm, Nachrichten über ein nicht verbundenes Socket zu senden, indem eine Zieladresse angegeben wird.
Zum Broadcastbetrieb an einem Socket setzen Sie zuerst eine Setsockopt -Subroutine ab, die die Option SO_BROADCAST verwendet, um Broadcastberechtigungen zu erhalten.
Geben Sie die Adresse des Ziels mit dem Parameter Bis an. Geben Sie die Länge der Nachricht mit dem Parameter Länge an. Wenn die Nachricht zu lang ist, um das zugrunde liegende Protokoll zu durchlaufen, wird der Fehler EMSGGRÖßE zurückgegeben und die Nachricht wird nicht übertragen.
Wenn der Senden -Socket keinen Speicherplatz für die zu übertragende Nachricht hat, blockiert die Subroutine Sendto die Nachricht, sofern sich der Socket nicht in einem nicht blockierenden E/A-Modus befindet.
Verwenden Sie die Subroutine Auswählen , um festzustellen, wann es möglich ist, weitere Daten zu senden.
Die Socketanwendungen können mit COMPAT_43 -Definition kompiliert werden. Dadurch wird die sockaddr -Struktur BSD 4.3 kompatibel. Weitere Informationen finden Sie unter socket.h.
Parameter
| Element | Beschreibung |
|---|---|
| Socket | Gibt den eindeutigen Namen für den Socket an |
| Nachricht | Gibt die Adresse an, die die zu sendende Nachricht enthält. |
| Länge | Gibt die Größe der Nachricht in Byte an. |
| Flags | Ermöglicht dem Absender die Steuerung der Nachrichtenübertragung. Der Parameter Flaggen , der zum Senden eines Aufrufs verwendet wird, wird durch logisches Verknüpfen eines oder beider der folgenden Werte mit OR gebildet:
Hinweis:
Die Datei /usr/include/sys/socket.h definiert den Parameter Flags . |
| to | Gibt die Zieladresse für die Nachricht an Die Zieladresse ist eine sockaddr -Struktur, die in der Datei /usr/include/sys/socket.h definiert ist. |
| ToLength | Gibt die Größe der Zieladresse an. |
Rückgabewerte
Nach erfolgreicher Ausführung gibt die Subroutine Sendto die Anzahl der gesendeten Zeichen zurück.
Wenn das Unterprogramm sendto nicht erfolgreich ist, gibt das System den Wert -1 zurück, und die globale Variable errno wird gesetzt, um den Fehler anzuzeigen.
Fehlercodes
Die Subroutine ist nicht erfolgreich, wenn einer der folgenden Fehler auftritt:
| Fehler | Beschreibung |
|---|---|
| EACCES | Der Schreibzugriff auf den benannten Socket wird verweigert oder der Socket, der versucht, ein Broadcastpaket zu senden, hat keine Broadcastfunktionalität. |
| EADDRNOTAVAIL | Die angegebene Adresse ist keine gültige Adresse. |
| EAFNOUNTERSTÜTZUNG | Die angegebene Adresse ist keine gültige Adresse für die Adressfamilie dieses Sockets. |
| EBADF | Der Parameter Socket ist ungültig. |
| ECONNRESET | Das Schließen einer Verbindung wurde von einem Peer erzwungen. |
| EDESTADDRREQ | Der Socket befindet sich nicht im Verbindungsmodus und es ist keine Peeradresse festgelegt. |
| EFAULT | Der Parameter Adresse befindet sich nicht in einem beschreibbaren Teil des Benutzeradressraums. |
| EHOSTUNREACH | Der Zielhost kann nicht erreicht werden. |
| EINTR | Ein Signal hat Sendto unterbrochen, bevor Daten übertragen wurden. |
| EINVAL | Der Parameter Länge oder ToLength ist ungültig. |
| EISVerbindung (EISCONN) | Ein SOCK_DGRAM -Socket ist bereits verbunden. |
| EMSGGRÖßE | Die Nachricht ist zu groß, um auf einmal gesendet zu werden, wie es der Socket erfordert. |
| ENETUNREACH | Das Zielnetz ist nicht erreichbar. |
| ENOBUFS | Das System hat keinen Speicher mehr für eine interne Datenstruktur. |
| ENOENT | Der Pfadname gibt keine vorhandene Datei an oder der Pfadname ist eine leere Zeichenfolge. |
| ENOMEM | Der verfügbare Datenspeicherbereich im Speicher ist nicht groß genug, um Gruppen-/ACL-Informationen aufzunehmen. |
| ENOPROTOOPT (ENOPROTOOPT) | Das Protokoll wird nicht unterstützt (64 Bit). |
| ENOTCONN | Der Socket befindet sich im Verbindungsmodus, ist aber nicht verbunden. |
| ENOTSOCK (ENOTSOCK) | Der Parameter Socket verweist auf eine Datei, nicht auf einen Socket. |
| EOPNOTSUPP | Das Socketargument ist einem Socket zugeordnet, der mindestens einen in Flaggenfestgelegten Wert nicht unterstützt. |
| EPIPE | Es wurde versucht, an ein Socket zu senden, das verbunden war, aber die Verbindung wurde entweder vom fernen Peer oder von dieser Seite der Verbindung beendet. Wenn das Socket den Typ SOCK_DATENSTROMhat, wird das Signal SIGPIPE an den aufrufende Prozess generiert. |
| EWOULDBLOCK | Der Socket wird als nicht blockierend markiert und es sind keine Verbindungen vorhanden, die akzeptiert werden können. |