A következo program lefoglal egy UDP portot, kiírja annak a címét a képernyore, és vár az UDP-porton egy datagramra, és ha kap egyet, akkor kiírja a tartalmát.
#include <sys/types.h>
#include <sys/socket.h>
#include <netinet/in.h>
#include <stdio.h>
/*
* A program letrehoz egy UDP socketot, nevvel latja el, es egy ra
* erkezo csomagot fogad es kiir.
*/
main()
{
int sock, len;
struct sockaddr_in server, from;
char buf[1024];
int addrlen;
sock = socket(AF_INET, SOCK_DGRAM, 0);
if (sock < 0) {
perror("hiba a socket-nel");
exit(1);
}
server.sin_family = AF_INET;
server.sin_addr.s_addr = htonl(INADDR_ANY);
server.sin_port = htons(0);
if (bind(sock, &server, sizeof(server))) {
perror("hiba a bind-nal");
exit(1);
}
len = sizeof(server);
if (getsockname(sock, &server, &len)) {
perror("hiba a getsockname-nel");
exit(1);
}
fprintf(stderr,"UDP port:%d\n", ntohs(server.sin_port));
if (recvfrom(sock, buf, 1024, 0, &from, &addrlen) < 0) {
perror("hiba a recvfrom-nal");
exit(2); }
fprintf(stderr,"Fogadott szoveg: >>%s<<\n", buf);
close(sock);
}