Problem z wysyłaniem dużych danych przez TCP w C#

0

Witajcie,
gdy wysyłam bardzo mały plik graficzny z serwera do clienta, to wszystko jest ok, ale gdy próbuję wysłać już większy, to ucina mi go do 8kb.
Odbieranie danych przez client wygląda tak:

	     while (true)
            {
                int avb = client.Available;
                if (avb != 0)
                {
                    byte[] img = new byte[avb];
                    str.Read(img, 0, avb);
                    FileStream fs = new FileStream("D:/abc642.bmp", FileMode.Create);
                    fs.Write(img, 0, img.Length);
                    fs.Close();

                    
                    break;
                }
                
            }

Po stronie serwera to po prostu pobranie bajtów z pliku, a potem ich wysłanie, więc kodu nie mam co podawać.

W czym jest problem? Da się jakoś zwiększyć ten limit?

0

Być może problem leży w tym, że metoda Read odbiera bajtów tyle ile wskażesz, a że akurat w danym momencie jest tylko kawałek strumienia dostępny, a mianowicie 8192b czyli domyślna wartość buforu odbioru to dostajesz tylko kawałek pliku. Musisz odbierać aż się skończą dane w strumieniu. Możesz też na samym początku wpisać do strumienia długość pliku, dzięki temu wiesz ile masz odebrać.

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