next up previous contents
Next: Példa egy összeköttetés-mentes Up: Példák a socket Previous: Példa egy konkurrens

Példa egy összeköttetés-mentes (datagram) szerverre

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);
}



Csizmazia Balazs
Tue Apr 2 00:06:27 MET DST 1996