#include <winsock.h>
#include <string.h>
#include <iostream.h>
main()
{
SOCKET listenSocket;
SOCKET remoteSocket;
SOCKADDR_IN Server_addr;
SOCKADDR_IN Client_addr;
int sin_size;
short port;
char buffer[256];
int wsastartup;
int ls_result;
/* Inizializzazione della libreria Socket */
WORD wVersionRequested = MAKEWORD(2,2);
WSADATA wsaData;
wsastartup = WSAStartup(wVersionRequested, &wsaData);
if (wsastartup != NO_ERROR) cout<<"Errore WSAStartup()\n";
/* Creazione della Socket che si porrà in ascolto di richieste del Client*/
listenSocket = socket(AF_INET, SOCK_STREAM, IPPROTO_TCP);
if (listenSocket < 0)
cout<<"Server: errore nella creazione della socket.\n";
else cout<<"La Listening Socket è partita\n";
/* Effettua la bind sull’indirizzo e porta ora specificati */
port = 4000;
Server_addr.sin_family = AF_INET;
Server_addr.sin_addr.S_un.S_un_b.s_b1=127; // indico l'indirizzo IP
Server_addr.sin_addr.S_un.S_un_b.s_b2=0;
Server_addr.sin_addr.S_un.S_un_b.s_b3=0;
Server_addr.sin_addr.S_un.S_un_b.s_b4=1;
Server_addr.sin_port = htons(port);
if (bind(listenSocket,(LPSOCKADDR)&Server_addr,sizeof(struct sockaddr)) < 0)
cout<<"Server: errore durante la bind.\n";
/* La socket si pone in "ascolto" tramite la listen() */
ls_result = listen(listenSocket, SOMAXCONN);
if (ls_result < 0) cout<<"Server: errore durante la listen.\n";
else cout<<"La Socket è in Ascolto\n";
/* La socket accetta la richiesta di connessione del Client */
sin_size = sizeof(struct sockaddr_in);
remoteSocket = accept(listenSocket, (struct sockaddr *)&Client_addr,&sin_size);
cout<<"Accettata Connessione con Client: "<<inet_ntoa(Client_addr.sin_addr)<<endl;
/* Il Server accetta il messaggio dal Client */
recv(remoteSocket, buffer, sizeof(buffer), 0);
cout<<"Messaggio Arrivato: "<<buffer<<endl;
cout<<"Chiudo il Server"<<endl;
closesocket(remoteSocket);
WSACleanup();
system("pause");
return 0;
}