/media/sda-magnetic/david/Dok-15-2023-11-27/fernuni-hagen/cs-i-ii/old-cs-2-03/pascal-compiler/siac4t/server.c


#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <fcntl.h>
#include <errno.h>
#include <time.h>
#include <sys/types.h>
#include <sys/socket.h>
#include <netinet/in.h>
#include <netdb.h>
#include <arpa/inet.h>
#include <unistd.h>

#define PORT 4000

#define RCVBUFSIZE 8192


static void get_buf(int client_socket)
{
    int recv_size;
    time_t zeit;

    if((recv_size = recv(client_socket, buf, RCVBUFSIZE,0)) < 0)
        error_exit("Fehler bei recv()");
    buf[recv_size] = '\0';

return;
}


int main( int argc, char *argv[]) {
    struct sockaddr_in server, client;

    int sock, fd;
    unsigned int len;

    sock = socket(PF_INET, SOCK_STREAM, IPPROTO_TCP);
    if (sock < 0)
        error_exit("Fehler beim Anlegen eines Sockets");
    memset( &server, 0, sizeof (server));
    server.sin_family = AF_INET;
    server.sin_addr.s_addr = htonl(INADDR_ANY);
    server.sin_port = htons(PORT);

    if(bind(sock,(struct sockaddr*)&server, sizeof( server)) < 0)
        error_exit("Kann das Socket nicht \"binden\"");

    if(listen(sock, 5) == -1 )
         error_exit("Fehler bei listen");

    for (;;) {
        len = sizeof(client);
        fd = accept(sock, (struct sockaddr*)&client, &len);
        if (fd < 0)
            error_exit("Fehler bei accept");
        printf("Bearbeite den Client mit der Adresse: %s\n",
        inet_ntoa(client.sin_addr));
        get_buf(fd);
        close(fd);
    }
    return EXIT_SUCCESS;
}