#include<sys/types.h>
#include<sys/socket.h>
int recvfrom(int sockfd, void *msg, int msglen, int flags, struct sockaddr *from, int *fromlen);
Diese Funktion wird erst aufgerufen, nachdem sockfd
mittels
bind() an einen bestimmten Port gebunden wurde.
sockfd
ist der Socket von dem gelesen werden soll. msg
ist der Buffer in den die
empfangene Nachricht geschrieben wird und msglen
dessen Länge.
Mit flags
können einige Flags übergeben werden (siehe
man page) die jedoch meist nicht benötigt werden (flags = 0).
Die Anzahl der gelesenen Bytes wird zurückgegeben (oder -1 bei einem Fehler). Im
Parameter from
wird gespeichert von wo die Nachricht gekommen ist. Wird
from
auf NULL
gesetzt, wird keine Adresse eingetragen und
auch der Parameter fromlen
ignoriert, in dem sonst die Länge der
Adresse des Senders gespeichert wird.
$ man recvfrom
char buffer[1024];
int bytes;
/* Die Adresse des Senders interessiert uns nicht, daher werden
die letzten beiden Parameter auf NULL gesetzt */
if((bytes = recvfrom(socketfd, buffer, sizeof(buffer), 0, NULL, NULL)) == -1){
/* Fehler */
}
/* Anmerkung: Beim Empfangen von Zeichenketten muss das abschließende '\0'
angehängt werden. */
buffer[bytes] = '\0';
char buffer[1024];
int bytes;
/* Die Adresse des Senders interessiert uns nicht, daher werden
die letzten beiden Parameter auf NULL gesetzt */
if((bytes = recvfrom(socketfd, buffer, sizeof(buffer), 0, NULL, NULL)) == -1){
/* Fehler */
}