sendto

Wie sieht's aus?

#include <sys/types.h>
#include <sys/socket.h>

ssize_t sendto(int s, const void *msg, size_t len, int flags,
        const struct sockaddr *to, socklen_t tolen);
    

Was tut's?

Mit sendto kann man, ähnlich wie mit send(), Daten auf einem Socket senden. Die beiden zusätzlichen Parameter geben hierbei an, an wen die Daten gesendet werden sollen. Man verwendet sendto(), wenn man einen Socket nicht vorher mit connect() verbunden hat (wie z.B. bei UDP üblich).

Was machen die Parameter?

Die ersten vier Parameter entsprechen denen von send().

Die beiden letzten Parameter geben eine Adresse vom Typ struct sockaddr_in{} (in unserem Fall) an, der letzte Parameter beinhaltet hierbei die Länge der Struktur, damit der Kernel erkennt, was man ihm anbietet.

Wie verwende ich es?

struct sockaddr_in addr;
int s;
char text[] = "Hallo, Welt!\r\n";

s = ... /* socket() mit z.B. SOCK_DGRAM */

addr.sin_addr.s_addr = inet_addr("192.168.1.1");
addr.sin_family = AF_INET;
addr.sin_port = htons(4711);

if (sendto(s, text, strlen(text), 0, (struct sockaddr*) &addr, sizeof(addr)) == -1)
{
    perror("sendto() failed");
    return 1;
}