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); } }

Rispondi quotando