Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Распределённые приложения и сеть > Передача файла


Автор: Dottik 20.12.2006, 17:57
Некоторые файлы передаются нормально. А у некоторых выскакивает Exception:

I
Код

An unhandled exception of type 'System.ArgumentException' occurred in mscorlib.dll

Additional information: Found a low surrogate char without a preceding high surrogate at index: 741.  The input may not be in this encoding, or may not contain valid Unicode (UTF-16) characters.


Объясните с чем это связано и как обойти.

Вот фрагмент передачи файла:

Код

        public void Do(ref StreamWriter serverStreamWriter, ref StreamReader serverStreamReader)
        {
            string param = serverStreamReader.ReadLine();
            FileStream fs = new FileStream(param, FileMode.Open);
            BinaryReader br = new BinaryReader(fs);
            char [] buf = new char[1024];
            int count;
            FileInfo fi = new FileInfo(param);
            long size = fi.Length;
            serverStreamWriter.WriteLine(size.ToString());
            br.BaseStream.Position = 0;
            while ((count = br.Read(buf, 0, 1024)) > 0)
            {
                serverStreamWriter.WriteLine(count.ToString());
                serverStreamWriter.Flush();
                serverStreamWriter.Write(buf);
                serverStreamWriter.Flush();
            }
            serverStreamWriter.WriteLine(@"0");
            serverStreamWriter.Flush();
        }



Спасибо.

Автор: mr.DUDA 21.12.2006, 12:50
Может серверу бинарные файлы не нравятся ?

Автор: Dottik 22.12.2006, 11:15
Именно.Объясните с чем это связано и как обойти. Спасибо.

Автор: mr.DUDA 22.12.2006, 17:06
Задавать кодировку для вывода в StreamWriter, которую поймёт сервер (utf-16). Конечно, если речь о текстовых файлах. Если же передаются бинарные (картинки и т.п.) и сервер - также наше приложение, то на стороне сервера нужно юзать не StreamReader а BinaryReader, или читать из NetworkStream напрямую.

Автор: Dottik 24.12.2006, 14:21
 smile 

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)