Некоторая логическая проблема, смотрите:
while(1) {
sin_size = sizeof(struct sockaddr_in);
printf("qua");
newS2 = accept(s,(struct sockaddr*)&local, &sin_size);
printf("Accettata connessione con client \n");
fflush(stdout);
if(fork == 0) {
if(newS2 == -1) {
perror("Accept fallita");
return 1;
}
}
}
Что бы ни случилось, вы возвращаетесь к accept
или выходам, нет условия, которое позволяло бы вам выйти из цикла, чтобы что-то прочитать.return 1
просто возвращается из main
и выходит из программы.
Примечание: я полагаю, fork
- это вызов fork()
, но даже в этом случае проблема та же ...
Примерно так должно быть лучше:
while(1) {
sin_size = sizeof(struct sockaddr_in);
newS2 = accept(s,(struct sockaddr*)&local, &sin_size);
if(newS2 == -1) {
perror("Accept fallita");
return 1;
}
printf("Accettata connessione con client \n");
fflush(stdout);
if(fork() == 0) {
break; // get out the loop...
}
}