Urywa odbiór pakietów po 8kb

Odpowiedz Nowy wątek
2013-04-07 22:57
0

Cześć,
mam prosty program, który odbiera przesyłane pakiety w pętli:

 while(1){

    if(( ile = recvfrom( sockfd, buf, 4096 - 1, 0,
    ( struct sockaddr * ) & LACZACY, & dlugosc ) ) == - 1 ) {
        perror( "recvfrom" );
                  int blad=WSAGetLastError();
                  string bladek = "Blad to "+blad;
         Application->MessageBox(bladek.c_str(),"blad", NULL);

    }

    buf[ ile ] = '\0';
//tutaj sie pastwie nad danymi
}

Wszystko jest okej, ale problem się zaczyna gdy jednorazowo wyślę mu sporo danych(np. 12 pakietów po ~1kb każdy), wtedy program czyta pierwsze 9 pakietów a resztę jakby ignoruje - sprawdzałem wiresharkiem, te pakiety są wysyłane, ale program jakby ich nie widział. WSAGetLastError milczy, w czym może być problem?

Pozostało 580 znaków

2013-04-08 12:05
adif
0

niepatrz na liczbe pakietow tylko na ilosc danych
kazesz odebrac 4kB wiec prawdopodobnie tcp optymalizuje wysylanie/odbieranie i za 1 razem masz sklejone kilka pakietow
tcp ci gwarantuje poprawnosc danych i kolejnosc a czy je cale Od razu dostaniesz lub sklejone to juz co innengo

Pozostało 580 znaków

Odpowiedz
Liczba odpowiedzi na stronę

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