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)'.