Форум программистов, компьютерный форум, киберфорум
Наши страницы
C# для начинающих
Войти
Регистрация
Восстановить пароль
 
titans2011
302 / 263 / 109
Регистрация: 27.09.2010
Сообщений: 1,058
#1

Обрыв байтов при передачи по сети

24.04.2013, 22:19. Просмотров 390. Ответов 1
Метки нет (Все метки)

Всем привет. У менять код, который отсылает BitmapSource (который хранит в себе скрин экрана (около 1,5 мегабайта)) по сети.
C#
1
2
3
4
5
                        TcpClient client = new TcpClient(ipClient.Ip.ToString(), 11001);
                        NetworkStream netstream = client.GetStream();
                        netstream.Write(ws_byte[0], 0, ws_byte[0].Length); 
                        netstream.Close();
                        client.Close();
ws_byte[0] это байтовый массив, перегнанный с помощью мемстрима из BitmapSource.
Ровно перед эти куском кода, я сохраняю картинку, и все нормально, все видно, все отлично.
Как только я получаю её на клиенте:
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
                TcpClient client = (TcpClient)obj;
                NetworkStream netstream = client.GetStream();
                byte[] arr = new byte[client.ReceiveBufferSize];
                int len = netstream.Read(arr, 0, client.ReceiveBufferSize);
                if (len > 0)
                {
                    BitmapSource temp = ToBitmapImage(arr);
                }
 
......
        public static BitmapSource ToBitmapImage(byte[] bytes)
        {
            using (var stream = new MemoryStream(bytes))
            {
                var decoder = BitmapDecoder.Create(stream, BitmapCreateOptions.None, BitmapCacheOption.OnLoad);
                return decoder.Frames[0];
            }
        }
Я сохраняю рисунок (temp).И рисунок получается исковерканным.Вверху остается верхняя полоска, пикселей на 50, все остальное серое. Ну почему. Бьюсь уже неделю.

Заказываю контрольные, курсовые, дипломные и любые другие студенческие работы здесь.

0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
24.04.2013, 22:19
Ответы с готовыми решениями:

как отловить обрыв сети (SocketException)
Добрый день! Столкнулся с такой, вроде бы тривиальной задачей - необходимо...

Преобразование двумерного массива в массив байтов для передачи через сеть
Доброго времени суток. Собственно возник вопрос, а возможно ли преобразовать...

Сериализация объекта для передачи по сети
Здравствуйте многоуважаемые форумчане. Взываю к вам, ибо ответа найти я не...

Приложение для передачи файлов по сети
Доброго времени суток всем!!! Я тут новенький да и в программировании тоже....

Замер времени передачи пакета по сети
Добрый вечер. Подскажите, пожалуйста,как можно измерить время выполнения...

1
Wolfdp
763 / 722 / 186
Регистрация: 15.06.2012
Сообщений: 2,829
Записей в блоге: 1
Завершенные тесты: 1
25.04.2013, 00:44 #2
client.ReceiveBufferSize - это внутренний буфер класса для чтения и он далеко не 1,5Мб. Вам нужно или указывать длину сообщения в начале отправки, или шаманить некую метку конца.
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
25.04.2013, 00:44

DirectShowNet Фильтры для Передачи аудио по сети
Добрый день, прошу помощи знающих людей. Пишу аудио фильтры для передачи звука...

Сканирование байтов в памяти, и получение начального адреса байтов
Привет форумчане! У меня вопрос, как просканировать память у процесса так,...

Ишу рабочий пример клиент-серверного приложения для передачи файлов по сети
Сабж. Если у кого-то имеется подобное или кто-нибудь где-нибудь видел,...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
2
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru