![]() |
|
Модераторы: gambit |
![]()
|
|
| albert21 |
|
|||
|
Бывалый ![]() Профиль Группа: Участник Сообщений: 166 Регистрация: 10.1.2006 Репутация: нет Всего: нет |
Всем доброго дня.
Вот решил разобраться с работой с сокетами в шарпе! Текст передаётся, получается, а как передать объект собственного класса? Как реализовать перевод объекта своего класса в массив байтов? --------------------
http://www.certifications.ru/publicresults.php?tu_id=45939 |
|||
|
||||
| mr.DUDA |
|
|||
|
3D-маньяк ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 8244 Регистрация: 27.7.2003 Где: город-герой Минск Репутация: 2 Всего: 232 |
Через сериализацию. Самое простое - это пометить свой класс атрибутом [Serializable] и вызвав BinaryFormatter.Serialize сохранить объект в stream. Аналогично (Deserialize) объект восстанавливается из сериализованного представления. Если работаем с массивом байт, то как промежуточный stream прокатит MemoryStream.
-------------------- ![]() |
|||
|
||||
| albert21 |
|
||||||
|
Бывалый ![]() Профиль Группа: Участник Сообщений: 166 Регистрация: 10.1.2006 Репутация: нет Всего: нет |
Проблема, mr.DUDA, помогите пожалуйста
Вот, попробовал! Ошибается Класс рукописный
Клиент
Сервер
Подскажите пожалуйста в чём ошибка? Или может есть свой пример Добавлено @ 16:02 Ошибка происходит во время приёма сообщения сервером --------------------
http://www.certifications.ru/publicresults.php?tu_id=45939 |
||||||
|
|||||||
| mr.DUDA |
|
|||
|
3D-маньяк ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 8244 Регистрация: 27.7.2003 Где: город-герой Минск Репутация: 2 Всего: 232 |
Судя по всему это из-за того, что сервер пытается десериализовать объект у которого прописано имя assembly, отсутствующей на сервере. То есть, класс MyInt на сервере - это один класс, а присланный клиентом в потоке объект - это уже другой класс, т.к. имя assembly там другое. Посему, нужно либо запихнуть сериализуемый класс в отдельную сборку, которая есть и у сервера и у клиента, либо пользоваться XML- либо SOAP-сериализацией.
-------------------- ![]() |
|||
|
||||
| albert21 |
|
||||
|
Бывалый ![]() Профиль Группа: Участник Сообщений: 166 Регистрация: 10.1.2006 Репутация: нет Всего: нет |
Я попробую! Но я обнаружил, что де сериализация MyInt не проходит даже в рамках одного класса:
Может это из-за того, что не указано свойство Capacity потока MemoryStream? Пробовал применить
Не компилится!!! Как исправить? --------------------
http://www.certifications.ru/publicresults.php?tu_id=45939 |
||||
|
|||||
| albert21 |
|
|||
|
Бывалый ![]() Профиль Группа: Участник Сообщений: 166 Регистрация: 10.1.2006 Репутация: нет Всего: нет |
Всё верно, mr.DUDA! Спасибо! Нужен комментарий на предыдущий пост --------------------
http://www.certifications.ru/publicresults.php?tu_id=45939 |
|||
|
||||
| mr.DUDA |
|
|||
|
3D-маньяк ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 8244 Регистрация: 27.7.2003 Где: город-герой Минск Репутация: 2 Всего: 232 |
Всё дело в том, что сериализация идёт в поток (MemoryStream), поток имеет такое свойство как текущая позиция, и после сериализации позиция установлена в конце потока. Десериализация не пройдёт, если не передвинуть позицию с пом. Seek(0, SeekOrigin.Begin) на начало потока. -------------------- ![]() |
|||
|
||||
| albert21 |
|
|||
|
Бывалый ![]() Профиль Группа: Участник Сообщений: 166 Регистрация: 10.1.2006 Репутация: нет Всего: нет |
Спасибо, mr.DUDA!
--------------------
http://www.certifications.ru/publicresults.php?tu_id=45939 |
|||
|
||||
| mr.DUDA |
|
|||
|
3D-маньяк ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 8244 Регистрация: 27.7.2003 Где: город-герой Минск Репутация: 2 Всего: 232 |
пожалуйста!
-------------------- ![]() |
|||
|
||||
| CityAC |
|
|||
|
Бывалый ![]() Профиль Группа: Участник Сообщений: 161 Регистрация: 3.11.2006 Где: Украина Горловка Репутация: нет Всего: 1 |
Чтоб не плодить похожие темы пишу здесь. Вопрос сходный:
На сервере есть экземпляр класса DataRow как его сериализовать для передачи на клиент? Я так понимаю если свой класс то можно поставить метку [Serializable] а как тут быть? И сюда загляните Pls. Нужны советы. Это сообщение отредактировал(а) CityAC - 19.9.2007, 23:55 --------------------
Вижу цель, не вижу припятствий. |
|||
|
||||
![]()
|
| Прежде чем создать тему, посмотрите сюда: | |
|
|
Используйте теги [code=csharp][/code] для подсветки кода. Используйтe чекбокс "транслит" если у Вас нет русских шрифтов. Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, cully, mr.DUDA, Exception. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | Распределённые приложения и сеть | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |