[c++ builder] problem z Selectem

0

mam problem z uzyciem funkcji select(..). nie wiem w czym jest problem zahcowuje sie tak jakby zawsze byly dane, program klient zawsze je odbiera nawet jesli wylacze serwer. ? prosze o pomoc. oto kod:

int count = 0;
        bool kont = true;
        while(kont)
        {
                Sleep(900);
                if ( count > 5 )
                {
                     zmienna.dane = "Serwer nie odpowiada";
                     zmienna.zmiana = true;
                     kont = false;
                     continue;
                }
                fd_set read;
                FD_ZERO(&read);
                FD_SET( klient, &read);

                timeval tt;
                tt.tv_sec = 1;
                tt.tv_usec = 0;

                select(klient+1,&read,NULL,NULL,&tt);

                if ( FD_ISSET( klient,&read) )
                {

                        String napis;
                        recv(klient,napis.c_str(),10,0);
                        zmienna.dane = napis;
                        zmienna.zmiana = true;
                        napis = "321";
                        send(klient,napis.c_str(),3,0);
                        count = 0;
                }
                count++;
        }

dlaczego ten select nic nie daje ?? tak jakby go nie bylo zawsze whcodzi do ifa ??

0

sprawdz wartosc zwracana przez select

RETURN VALUE
On success, select and pselect return the number of descriptors contained in the descriptor sets, which may
be zero if the timeout expires before anything interesting happens. On error, -1 is returned, and errno is
set appropriately; the sets and timeout become undefined, so do not rely on their contents after an error.

zwroc uwage na timeout, a jesli chcesz czekac w nieskonczonosc, to zamiast czegokolwiek podaj w wywolaniu NULL albo po prostu 0.

1 użytkowników online, w tym zalogowanych: 0, gości: 1