• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

c# problem z przesyłaniem plików w tcp

Object Storage Arubacloud
+1 głos
351 wizyt
pytanie zadane 17 sierpnia 2016 w C# przez jankustosz1 Nałogowiec (35,880 p.)

Witam.

Piszę kod do przesyłania plików i mam pewien problem.

To kod:

using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows;

namespace BibliotekiSiec
{
    public class WysylaczPliku
    {
        int _wielkoscPakietu = 100000;
        int wielkoscPakietuKB
        {
            get
            {
                return _wielkoscPakietu / 1024;
            }
            set
            {
                _wielkoscPakietu = value * 1024;
            }
        }
        public object locketWyslano = new object();
        public object locketRazem = new object();
        public long wyslano = 0;
        public long razem = 0;
        public bool czyOK = false;

        public void send(ref BinaryWriter bw, String file)
        {
            czyOK = false;
            lock (locketWyslano)
                    wyslano = 0;
            lock (locketRazem)
                razem = 0;
            FileInfo fileinf = new FileInfo(file);
            using (BinaryReader br = new BinaryReader(fileinf.OpenRead()))
            {
                lock (locketRazem)
                    razem = fileinf.Length;

                while (true)
                {
                    bool czyOstatniPakiet = false;

                    var pakiet = br.ReadBytes(_wielkoscPakietu);

                    if (br.PeekChar() == -1)
                        czyOstatniPakiet = true;

                    lock (locketWyslano)
                        wyslano += pakiet.Length;
                    bw.Write(czyOstatniPakiet);
                    bw.Write(pakiet.Length);
                    bw.Write(pakiet, 0, pakiet.Length);
                    if (czyOstatniPakiet)
                    {
                        czyOK = true;
                        return;
                    }
                }
            }

        }
    }
}

mam ciągle błąd z br.peekChar()

To jest błąd:

Wystąpił nieobsługiwany wyjątek typu „System.ArgumentException” w mscorlib.dll

Dodatkowe informacje: Bufor bajtów wyjściowych jest za mały, aby pomieścił znaki dekodowane, rezerwa 'System.Text.DecoderReplacementFallback' kodowania 'Unicode (UTF-8)'.

 

1 odpowiedź

0 głosów
odpowiedź 2 września 2016 przez kalendarmenn Obywatel (1,270 p.)
Nie znam się tak dobrze na C#, ale mi się wydaje, że ustawiłeś za dużą wartość w zmiennej:

 int _wielkoscPakietu = 100000; .

Podobne pytania

0 głosów
1 odpowiedź 179 wizyt
pytanie zadane 25 lutego 2019 w PHP przez jakubmark Początkujący (370 p.)
+1 głos
1 odpowiedź 102 wizyt
pytanie zadane 22 kwietnia 2017 w C# przez Deloryn Bywalec (2,060 p.)
0 głosów
3 odpowiedzi 4,599 wizyt
pytanie zadane 24 września 2015 w C# przez zmiennoimienny Mądrala (5,540 p.)

92,576 zapytań

141,426 odpowiedzi

319,652 komentarzy

61,961 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj.

Akademia Sekuraka

Kolejna edycja największej imprezy hakerskiej w Polsce, czyli Mega Sekurak Hacking Party odbędzie się już 20 maja 2024r. Z tej okazji mamy dla Was kod: pasjamshp - jeżeli wpiszecie go w koszyku, to wówczas otrzymacie 40% zniżki na bilet w wersji standard!

Więcej informacji na temat imprezy znajdziecie tutaj. Dziękujemy ekipie Sekuraka za taką fajną zniżkę dla wszystkich Pasjonatów!

Akademia Sekuraka

Niedawno wystartował dodruk tej świetnej, rozchwytywanej książki (około 940 stron). Mamy dla Was kod: pasja (wpiszcie go w koszyku), dzięki któremu otrzymujemy 10% zniżki - dziękujemy zaprzyjaźnionej ekipie Sekuraka za taki bonus dla Pasjonatów! Książka to pierwszy tom z serii o ITsec, który łagodnie wprowadzi w świat bezpieczeństwa IT każdą osobę - warto, polecamy!

...