Ho un problema, in pratica quando vado ad avviare client e server sembra andare tutto bene quando digito però una scelta dal client me la fa vedere e dp se voglio fare altro si blocca e mi dice che c'è un errore sulla bind ..mi sapete dire il perchè? C'è qualcosa di errato nella creazione del server? Ecco il codice relativo alla creazione della socket :
codice:void crea_socket() { int listenfd, connfd,ls_result,prezzo_prodotto_scelto,scelta_effettuata, acquisto; struct sockaddr_in servaddr; socklen_t sin_size; short port; listenfd = socket(AF_INET, SOCK_STREAM, IPPROTO_TCP); if (listenfd < 0) printf("Server: errore nella creazione della socket.\n"); else printf("La Listening Socket e' partita\n"); port=4000; servaddr.sin_family = AF_INET; servaddr.sin_addr.s_addr = htonl(INADDR_ANY); servaddr.sin_port = htons(port); if (bind(listenfd,(struct sockaddr *) &servaddr, sizeof(struct sockaddr_in)) < 0) printf("Server: errore durante la bind.\n"); //Rilevamento dell'eventuale errore durante la bind ls_result = listen(listenfd, SOMAXCONN); if (ls_result < 0) printf("Server: errore durante la listen.\n"); //La listen non è riuscita else printf("La Socket e' in Ascolto\n"); sin_size = sizeof(struct sockaddr_in); acquisto = 0; connfd = accept(listenfd, (struct sockaddr*) &servaddr, &sin_size); recv(connfd, (char *)&scelta_effettuata, sizeof(int), 0); printf("Messaggio Arrivato: %d \n", scelta_effettuata); prezzo_prodotto_scelto = 0; if (scelta_effettuata == 1) invia_prodotti (connfd, acquisto); if (scelta_effettuata == 2) invia_prod_da_prenotare (connfd, acquisto, prezzo_prodotto_scelto); if (scelta_effettuata == 3) { acquisto = 1; invia_prodotti (connfd, acquisto); } }

Rispondi quotando