#include <stdio.h>
//#include <conio.h>
#include <stdlib.h>
#include <string.h>
#include <time.h>
#include <winsock.h> //Linkare con l'opzione -lwsock32
#include <windows.h> //Per usare la Sleep
#define PORT 6644
#define BENVENUTO "Benvenuti nel gioco del MasterMind buon divertimento e in
bocca al lupo....\0"
#define VITTORIA "Complimenti hai vinto !!XD\nTempo impiegato (secondi): \0"
#define SCONFITTA "Complimenti hai PERSO !!XD\nLa soluzione era: \0"
#define NON_VALIDO "Tentativo non valido, ritenta\0"
#define MAX_STRING 256
void server();
void error(char *);
int InitializeWinsock(WORD );
int main(int argc, char *argv[]) {
if (!InitializeWinsock (MAKEWORD(1,1) ) ) return 1;
server();
WSACleanup();
return 0;
}
void server () {
SOCKET fd, fd_new; // "file" descriptors for the network sockets
SOCKADDR_IN saddr_me;
char buf[MAX_STRING];
if ((fd=socket(AF_INET,SOCK_STREAM,0)) == INVALID_SOCKET)
error("Server: socket not connected ");
saddr_me.sin_family = AF_INET;
saddr_me.sin_addr.s_addr= htonl(INADDR_ANY);
saddr_me.sin_port = htons(PORT);
if (bind(fd, (LPSOCKADDR) &saddr_me, sizeof(saddr_me)) == SOCKET_ERROR)
error("Server: bind failure ");
if (listen(fd,1) == SOCKET_ERROR)
error("Server: listen failure ");
printf("\nServer in azione\n");
if ( (fd_new=accept(fd, NULL, NULL)) == INVALID_SOCKET)
error("Server: accept failure ");
// In Windows i sockets non sono dei normali file descriptors, quindi
// non possono essere usate le normali primitive "read" e "write"
printf("\nConnessione al client riuscita\n");
// genera numeri casuali
srand((unsigned)time(NULL));
char vitt[5];
int tent=0;
for (int i=0;i<4;i++) {
// Inizializzo vett[] ha 49 numero ASCII che equivale a 1 cosi facendo
genera numeri random fino a 9
vitt[i]=49+rand()%9;
for (int j=0;j<i;j++) {
if (vitt[i]==vitt[j]) {
i--;
break;
}
}
}
vitt[4]='\0';
// Invia mex di benvenuto.
if ( send(fd_new,BENVENUTO, strlen(BENVENUTO)+1, 0) == SOCKET_ERROR )
error("Server: sending failure ");
// clock t tipo dichiarato in time.h
clock_t start,end;
start=clock();
while (1) {
char msg1[]="Tentativo numero: \0\0\0";
char num[3];
// tent variabile x il incremento dei tentativi la itoa serve x la
conversione da int a stringa
tent++;
itoa(tent,num,10);
// strcat serve x la concatenazione di due stringhe
strcat(msg1,num);
Sleep(1000);
Parte server del gioco del Mastermind
Permette di giocare al Mastermind se si aggiunge un client! Ottimo esempio fatto con C++ in Borland.