#include <stdio.h>
#include <winsock.h>
#include <windows.h>
long WINAPI Thread1(LPWORD ret);
int cl= 100;
int main (){
HANDLE hThread[1];
DWORD dwID[1];
int count=0;
int d;
WSADATA wsadata;
int Versione= WSAStartup(MAKEWORD(2,2),&wsadata);
if(Versione!=NO_ERROR){
printf("Errore nell'inizializzazione delle socket\n");
return 1;
}
SOCKET server;
server=socket(AF_INET,SOCK_STREAM,IPPROTO_TCP);
if(server==INVALID_SOCKET){
printf("Errore: Socket non valida\n");
return 1;
}
SOCKADDR_IN parametri_server;
parametri_server.sin_family=AF_INET;
parametri_server.sin_addr.s_addr = INADDR_ANY;
parametri_server.sin_port=htons(1000);
int funzione_bind;
funzione_bind=bind( server, (SOCKADDR*) ¶metri_server, sizeof(parametri_server));
if(funzione_bind ==SOCKET_ERROR ){
printf("Funzione bind non riuscita\n");
closesocket(server);
WSACleanup();
return 1;
}
int funzione_listen;
funzione_listen=listen(server,1);
if(funzione_listen ==SOCKET_ERROR){
printf("Errore nella funzione listen \n");
closesocket(server);
WSACleanup();
return 1;
}
SOCKET Accetta_connessioni;
printf("Attendo la connesione di un client\n");
while(1){
Accetta_connessioni=ERROR;
while(Accetta_connessioni==ERROR){
Accetta_connessioni=accept(server,NULL,NULL);
}
printf("Un client ha effettuato una connessione!\n");
count ++;
cl ++;
printf("N. client: %d\n", cl);
printf("Client connessi: %d\n\n", count);
hThread[0] = CreateThread(NULL,0,(LPTHREAD_START_ROUTINE)Thread1,NULL,0,&dwID[0]);
}
}
long WINAPI Thread1(LPWORD ret)
{
int ricevuto;
char ricezione_dati[256];
do{
recv(server,ricezione_dati,256,0);
printf("\nHo ricevuto dal client%d>>> %s ",cl,ricezione_dati);
}
while(strcmp(ricezione_dati,"Chiuditi")!=0);
getchar();
closesocket(server);
WSACleanup();
return 0;
}