long allSent = 0, myślałem, że to oczywiste, skoro sam deklarujesz typ tej zmiennej i sam stwierdzasz, że jest za mały.
1 parametr to mój wysyłany plik, 2 to miejsce od którego aktualnie go wczytamy i wyślemy (...) Czy wystarczy int na drugi parametr?
specjalnie kapitalikami napisałem "offset w BUFORZE, czyli podajesz tam 0", ale chyba masz drobne problemy z czytaniem ze zrozumieniem. OFFSET W BUFORZE. w pętli czytasz do bufora. bufor za każdym razem zawiera kolejną porcję danych z pliku, począwszy od zerowego indeksu, skończywszy na długości bufora-1 lub ilości przeczytanych bajtów, zależy co mniejsze. ponieważ dane w buforze rozpoczynają się na samym jego początku, a sam początek ma indeks 0, to metodzie Write() podajesz 0 (ZERO) jako drugi parametr. innymi słowy parametr ten oznacza, od którego indeksu w buforze znajdują się dane, które trzeba zapisać. może taka "graficzka" będzie pomocna:
plik zawiera takie dane [0,1,2,3,4,5,6,7,8,9]
bufor ma rozmiar 4, po pierwszym odczytaniu masz [0,1,2,3], ilośćPrzeczytanychDanych = 4
zapisujesz Write([0,1,2,3], 0, ilośćPrzeczytanychDanych);
bufor ma rozmiar 4, po drugim odczytaniu masz [4,5,6,7], ilośćPrzeczytanychDanych = 4
zapisujesz Write([4,5,6,7], 0, ilośćPrzeczytanychDanych);
bufor ma rozmiar 4, po trzecim odczytaniu masz [8,9,6,7], ilośćPrzeczytanychDanych = 2
zapisujesz Write([8,9,6,7], 0, ilośćPrzeczytanychDanych);
ilośćPrzeczytanychDanych < rozmiar bufora, dziękuję, wychodzę.
w Twojej wersji:
plik zawiera takie dane [0,1,2,3,4,5,6,7,8,9]
bufor ma rozmiar 4, po pierwszym odczytaniu masz [0,1,2,3], ilośćPrzeczytanychDanych = 4
zapisujesz Write([0,1,2,3], 0, ilośćPrzeczytanychDanych);
bufor ma rozmiar 4, po drugim odczytaniu masz [4,5,6,7], ilośćPrzeczytanychDanych = 4
zapisujesz Write([4,5,6,7], 3, ilośćPrzeczytanychDanych);
w tym momencie leci wyjątek, bo bufor jest krótszy niż offset + ilość danych, robisz wielkie oczy i pytasz na forum, dlaczego tak.