Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 02.04.2017, 15:53   #21
KirillovS
Новичок
Джуниор
 
Регистрация: 02.04.2017
Сообщений: 1
По умолчанию

Цитата:
Сообщение от TaTT DoGG Посмотреть сообщение
вот так сделал передачу файла на сервер. если не менять код сервера, то видно, что какие-то данные от клиента приходят. но в верности этого кода я всё=таки не уверен. + не разобрался как на сервере собрать из переданных данных файл. помоги пожалуйста
Код:
NetworkStream serverStream = clientSocket.GetStream();
            BinaryFormatter format = new BinaryFormatter();
            byte[] buf = new byte[1024];
            int count;
            FileStream fs = new FileStream("111.txt", FileMode.Open);
            BinaryReader br = new BinaryReader(fs);
            long k = fs.Length;//Размер файла.
            format.Serialize(serverStream, k.ToString());//Вначале передаём размер
            while ((count = br.Read(buf, 0, 1024)) > 0)
            {
                format.Serialize(serverStream, buf);//А теперь в цикле по 1024 байта передаём файл             
            }
Приветствую.
Хотя прошло уже много лет, но вдруг кому пригодится.
На стороне сервера
Код:
  static void uploadFile(NetworkStream ns)
        {
            byte[] buf = new byte[1024];
            int count;
            System.IO.FileStream fs = new System.IO.FileStream("2.jpeg", System.IO.FileMode.Open);
            BinaryReader br = new BinaryReader(fs);
            fs.Close();

            byte[] sizeFile =BitConverter.GetBytes(fs.Length);
            //передаем размер файла
            ns.Write(sizeFile, 0, sizeFile.Length);

            Thread.Sleep(500);
            BinaryFormatter formater = new BinaryFormatter();

            while ((count=br.Read(buf,0,1024))>0)
            {
                formater.Serialize(ns, buf);    
            }            
        }
на стороне клиента

Код:
        byte[]byte[] buffe = new byte[client.ReceiveBufferSize];
        //ns = NetworkStream
        ns.Read(buffe, 0, buffe.Length);                        
        int sizeFile = BitConverter.ToInt32(buffe,0);
                      
        MemoryStream ms = new MemoryStream();
        BinaryFormatter formater = new BinaryFormatter();
                                              
        while (sizeFile > ms.Length)
        {
                 ms.Write((byte[])formater.Deserialize(ns),0,1024);
                 //sizeFile -= 1024;
        }
                       
        File.WriteAllBytes("22.jpeg", ms.ToArray());
KirillovS вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Потоки, передача файлов по сети SeЯgey Работа с сетью в Delphi 3 02.04.2011 23:51
Передача файлов по сети SL1CK Работа с сетью в Delphi 3 05.12.2009 00:08
Передача файлов по сети Sparky Общие вопросы Delphi 5 31.10.2009 19:34
Передача файлов по локальной сети(Indy) Biowulf86 Помощь студентам 1 08.05.2008 13:08