Salve ragazzi ho un problema, mi ritrovo a dover realizzare un server concorrente sotto c in windows, (richiesta aggiuntiva al progetto -.-) comunque sia sotto unix so dell'utilizzo della fork ma in windows come faccio????
ecco uno spezzone di codice, ad es. qui come dovrei operare?
codice:
void crea_socket()
{
SOCKET listenSocket; //Creazione della socket di ascolto
SOCKET remoteSocket; //Creazione della socket di ricezione
SOCKADDR_IN Server_addr;
SOCKADDR_IN Client_addr;
int sin_size, scelta_effettuata, acquisto;
short port;
int wsastartup;
int ls_result, prezzo_prodotto_scelto;
/* INIZIALIZZO WINSOCK */
WORD wVersionRequested = MAKEWORD(2,2);
WSADATA wsaData;
wsastartup = WSAStartup(wVersionRequested, &wsaData);
if (wsastartup != NO_ERROR)
printf("Errore WSAStartup()\n");
/* FINE WINSOCK */
/* Creazione Socket */
listenSocket = socket(AF_INET, SOCK_STREAM, IPPROTO_TCP);
if (listenSocket < 0)
printf("Server: errore .\n");
else
printf("La Listening Socket e' partita\n");
port = 4020;
Server_addr.sin_family = AF_INET; //Utilizzo della classe IP4
Server_addr.sin_addr.s_addr = htonl(INADDR_ANY);
Server_addr.sin_port = htons(port);
if (bind(listenSocket,(SOCKADDR*)&Server_addr,sizeof(struct sockaddr_in)) < 0)
printf("Server: errore.\n");
ls_result = listen(listenSocket, SOMAXCONN);
if (ls_result < 0)
printf("Server: errore.\n"); //
else
printf("La Socket e' in Ascolto\n");
sin_size = sizeof(struct sockaddr_in);
acquisto = 0;
remoteSocket = accept(listenSocket, (struct sockaddr *)&Client_addr,&sin_size);
printf("Accettata Connessione con Client: %s\n",inet_ntoa(Client_addr.sin_addr));
recv(remoteSocket, (char *)&scelta_effettuata, sizeof(int), 0);
printf("Messaggio Arrivato: %d \n", scelta_effettuata);
prezzo_prodotto_scelto = 0;
if (scelta_effettuata == 1)
invia_prodotti (remoteSocket, acquisto);
if (scelta_effettuata == 2)
invia_prod_da_prenotare (remoteSocket, acquisto, prezzo_prodotto_scelto);
if (scelta_effettuata == 3)
{
acquisto = 1;
invia_prodotti (remoteSocket, acquisto);
}
}