Quantcast
Channel: Forum Pasja Informatyki - Najnowsze pytania bez odpowiedzi
Viewing all articles
Browse latest Browse all 21942

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

$
0
0

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

 


Viewing all articles
Browse latest Browse all 21942