Модераторы: Partizan, gambit
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Передать сложный объект через сокеты 
:(
    Опции темы
Competitor
Дата 24.5.2007, 12:34 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 440
Регистрация: 23.3.2005
Где: Tula

Репутация: -1
Всего: -1



Субж.
Допустим есть порядка десяти значений, которые нужно передать клиенту. Как лучше это организовать? Перевести все в byte[], а потом на клиенте раскодировать. Но на мой взгляд проще сделать сложный объект, который будет хранить все эти данные и уже его передавать, но тогда возникает другой вопрос. Как передать сложный объект через сокеты?
PM MAIL WWW   Вверх
tol05
Дата 24.5.2007, 13:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Участник Клуба
Сообщений: 1632
Регистрация: 21.12.2006
Где: Харьков

Репутация: 63
Всего: 170



серилизовать его бинарно в тот же массив байт. Ремоутинг так же делает с MBV объектами - они должны быть [Serializable]


--------------------
На хорошей работе и сны хорошие снятся.
PM MAIL   Вверх
Competitor
Дата 25.5.2007, 14:19 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 440
Регистрация: 23.3.2005
Где: Tula

Репутация: -1
Всего: -1



Как используя сериализацию получить byte[] из сериализуемого класса? Чтобы потом передать этот массив по сети и раскодировать.
PM MAIL WWW   Вверх
tol05
Дата 25.5.2007, 14:42 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Участник Клуба
Сообщений: 1632
Регистрация: 21.12.2006
Где: Харьков

Репутация: 63
Всего: 170



Код

//отправка
byte[] buffer = new byte[1000];
using(MemoryStream memStream = new MemoryStream(buffer))
{
   BinaryFormatter formatter = new BinaryFormatter();
   formatter.Serialize(memStream, compositeObject);  
}
    //массив у тебя :)



//получение
compositeObject = ...
byte[] buffer = new byte[1000];
//в массив читаешь

using(MemoryStream memStream = new MemoryStream(buffer))
{
   BinaryFormatter formatter = new BinaryFormatter();
   compositeObject = formatter.Deserialize(memStream);  
}


Ну, это схематично, но думаю, что мысль ясна.

P.S. Всем: это один из возможных путей, так что особо не смеяться!  smile Предлагайте лучше свои варианты!

P.S.S. Только счас дошло, у тебя же сокеты, есть доступ к NetworkStream непосредственно? Тогда MemoryStream не нужен, качай прямо с NetworkStream !

Это сообщение отредактировал(а) tol05 - 25.5.2007, 14:47


--------------------
На хорошей работе и сны хорошие снятся.
PM MAIL   Вверх
archeg
Дата 25.5.2007, 15:43 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 612
Регистрация: 6.1.2007
Где: Киев

Репутация: 11
Всего: 27



Цитата(tol05 @  25.5.2007,  14:42 Найти цитируемый пост)
P.S. Всем: это один из возможных путей, так что особо не смеяться!   Предлагайте лучше свои варианты!


Все правильно, только я бы посоветовал сериализировать с помощью провайдеров сторонних разработчиков (на www.codeproject.com есть примеры). Они и быстрее и компактнее


--------------------
ИМХО задница есть универсальный интерфейс. Ибо через задницу можно сделать абсолютно ВСЕ (bash.org.ru)

Дядька всегда можно спросить в аське, если не задалбывать - не откажет smile
И вообще, на самом деле я студент, и ненавижу обращение на "Вы") Тут все свои  ;)
PM MAIL ICQ Jabber   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Прежде чем создать тему, посмотрите сюда:
mr.DUDA
THandle

Используйте теги [code=csharp][/code] для подсветки кода. Используйтe чекбокс "транслит" если у Вас нет русских шрифтов.
Что делать если Вам помогли, но отблагодарить помощника плюсом в репутацию Вы не можете(не хватает сообщений)? Пишите сюда, или отправляйте репорт. Поставим :)
Так же не забывайте отмечать свой вопрос решенным, если он таковым является :)


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, mr.DUDA, THandle.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Общие вопросы по .NET и C# | Следующая тема »


 




[ Время генерации скрипта: 0.0498 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.