/* Un server iterativ pentru jocul hangman * Lansare server: "hangman &" (sau echivalent WINDOWS) * Lansare client: "telnet numemasina 5432" * Terminarea clientului se face prin sistemul de operare */ #define ERR(S,N) {fprintf(stderr,"\n\r%s %d\n\r\ APEL: hangman & \n\r",S,N);exit(N);} #include #include #include #include #include #include extern time_t time (); extern int errno; int play_hangman (); int MaxVieti = 12; char *cuvinte[] = { #include "cuvinte.c" /* siruri "...","...", ... ,"..." */ }; #define PORT_HANGMAN 5432 /* Telnet pe acest port */ #define MAXLEN 80 /* Dimensiune buffer de date */ #define NUMAR_DE_CUVINTE (sizeof(cuvinte)/sizeof(cuvinte[0])) main () { int sock, fd, client_len; struct sockaddr_in server; /* Adresa serverului */ struct sockaddr_in client; /* Adresa clientului */ srand ((int) time ((long *) 0));/* Initializare generator */ sock = socket (AF_INET, SOCK_STREAM, 0); if (sock < 0) ERR ("socket", 1); server.sin_family = AF_INET; server.sin_addr.s_addr = htonl (INADDR_ANY); server.sin_port = htons (PORT_HANGMAN); if (bind (sock, (struct sockaddr *) &server, sizeof server) < 0) ERR ("bind", 2); listen (sock, 5); while (1) { client_len = sizeof (client); fd = accept (sock, (struct sockaddr *) &client, &client_len); if (fd < 0) { ERR ("accept", 3); } play_hangman (fd, fd); } } #include "play_hangman.c" /* Programul 3.14 Sursa serverului hangman.c */