Witam,
mam pewien problem z serwerem współbieżnym TCP. Polega na tym, że po zmianie flagi Work, accept nadal przyjmuje połączenia. Chodzi mi głównie o to, żeby unikając zamknięcia gniazda, serwer nie przyjmował nowych połączeń. Serwer przyjmuje pewnych klientów, wydane zostaje polecenie stop na serwerze i żaden nowy klient nie może się połączyć.
while(Work){
klientDl= sizeof(klientAdr);
klientGniazdo = (int*)malloc(sizeof(int));
if ((*klientGniazdo = accept(serwGniazdo, (struct sockaddr *) &klientAdr, &klientDl)) < 0){
perror("accept() - nie udalo się");
exit(1);
printf("Przetwarzam klienta %s\n", inet_ntoa(klientAdr.sin_addr));
pthread_create(&threadClientId, NULL, &ObslugaKlienta, (void*)klientGniazdo);
}
W czym może być problem?
Pozdrawiam