Your Browser is not longer supported

Please use Google Chrome, Mozilla Firefox or Microsoft Edge to view the page correctly
Loading...

{{viewport.spaceProperty.prod}}

Datenübertragung bei verbindungsloser Kommunikation

&pagelevel(5)&pagelevel

Mit der Funktion sendto() senden Sie Daten von einem Socket zu einem anderen Socket:

sendto(s, buf, buflen, flags, &to, tolen);

Die Parameter s, buf, buflen und flags verwenden Sie genauso wie bei verbindungsorientierten Sockets. Die Zieladresse übergeben Sie mit to und die Länge der Adresse mit tolen.

Bei Verwendung einer Datagramm-Schnittstelle ist zu beachten, dass es keine gesicherte Datenübertragung gibt. Somit kann ein sendto()-Aufruf nur dann eine Fehlerinformation zurückliefern, wenn dem lokalen System bekannt ist, dass die Nachricht nicht übertragen werden konnte.

Für den Empfang einer Nachricht über einen Datagramm-Socket verwenden Sie die Funktion recvfrom():

recvfrom(s, buf, buflen, flags, &from, &fromlen);

Der Parameter fromlen enthält zu Beginn die Größe des Puffers from. Bei Rückkehr der Funktion recvfrom() gibt fromlen die Größe der Adresse des Sockets an, von dem das Datagramm empfangen wurde.

Wahlweise können Sie vor einem sendto()- bzw. recvfrom()-Aufruf mit connect() eine bestimmte Zieladresse für einen Datagramm-Socket festlegen. In diesem Fall führt ein Aufruf von sendto() bzw. recvfrom() zu folgendem Verhalten:

  • Daten, die die Task mit sendto() ohne explizite Angabe einer Zieladresse abschickt, werden automatisch an den Partner mit der im connect()-Aufruf angegebenen Zieladresse gesendet.

  • Eine Benutzer-Task erhält mit recvfrom() ausschließlich Daten vom Partner mit der im connect()-Aufruf spezifizierten Adresse.

Für einen Datagramm-Socket kann mit connect() zu einem bestimmten Zeitpunkt immer nur eine Zieladresse spezifiziert sein. Mit einem weiteren connect()-Aufruf können Sie jedoch eine andere Zieladresse für den Socket festlegen.

Ein connect()-Aufruf für einen Datagramm-Socket kehrt sofort zurück; das System speichert lediglich die Adresse des Kommunikationspartners.