Witam, chciałem zapytać się czy są jakieś konkretne zasady dotyczące przesyłania danych przez gniazda ? Mam tu na myśli duże ilości danych, czyli np. pliki.
Pisze właśnie program, z użyciem WinSock, przesyłanie wygląda tak jak w komunikacji FTP, no i wszystko działało pięknie na localhoscie. Postanowiłem sprawdzić jak sprawuje się komunikacja między dwoma komputerami przez port od drukarki, no i dupa. Operacja za każdym razem przerywała się po przesłaniu ok. 150 KB. Nie pojawiał się żaden błąd więc najprawdopodobniej działo się tak ponieważ w którejś z pętli funkcja send() lub recv() zwracała -1.
Zacząłem kombinować i doszedłem do pewnych wniosków:
-
Bufor przesyłanych danych nie powinien być większy niż 2048 bajtów.
-
Najlepiej żeby bufor w pętli odbierającej był mniejszy niż w wysyłającej.
-
Najlepiej żeby w pętli odbierającej pojawił się Sleep() na ok. 10 milisekund.
Czy ktoś może jakoś uzasadnić moje spostrzeżenia, i wyjaśnić dlaczego teraz działa a przed tem nie ?
Czy są jakieś dokumentacje na ten temat ?