Форум программистов, компьютерный форум, киберфорум
C# для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.93/29: Рейтинг темы: голосов - 29, средняя оценка - 4.93
7 / 7 / 3
Регистрация: 11.01.2011
Сообщений: 73

Передать объект или коллекцию объектов с помощью TCP/IP

21.07.2015, 03:53. Показов 5514. Ответов 10
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Доброго времени суток.

у меня вопрос по TCP
я уже несколько дней ищу.
вот я сделал клиент \ сервер. они меняются между собой строкой.
как мне сделать что-то сложнее, как мне например передать объект или колекцию обектов ну и дт.

буду очень благодарен вам.

Добавлено через 14 минут
был бы очень благодарен, чтобы на примере показали как должно быть.
0
Лучшие ответы (1)
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
21.07.2015, 03:53
Ответы с готовыми решениями:

Как передать в коллекцию объект класса или пользовательского типа?
Встречаю две взаимоисключающие ошибки: В модуле класса PublicNonCreatable "Supplies" Private x As spls Private supcol As...

Web API. Как передать коллекцию объектов через POST
Здравствуйте! У меня есть POST-обработчик, принимающий и записывающий в БД коллекцию объектов. Но пока не могу понять, как посредством...

Недопустимый неполный тип , или как передать в функцию указатель на объект класса , или просто объект
Други мои , кодеры. Не могу я ни как передать в функцию объект класса , или что еще лучше(для меня , так как учусь работать с указателями)...

10
Эксперт .NET
 Аватар для insite2012
5548 / 4311 / 1218
Регистрация: 12.10.2013
Сообщений: 12,371
Записей в блоге: 2
21.07.2015, 07:08
Цитата Сообщение от Snayper_ua Посмотреть сообщение
передать объект или коллекцию объектов
Возможно, стоит посмотреть в строну WCF?
0
Заблокирован
21.07.2015, 07:50
Можно - только если упаковать объект в XML.
WCF конечно на много проще и надежнее ...
0
7 / 7 / 3
Регистрация: 11.01.2011
Сообщений: 73
21.07.2015, 13:00  [ТС]
я вичитал, что можно ище как-то:
Serialize & Deserialize

кто знает что-то об етом?
0
484 / 397 / 68
Регистрация: 14.02.2014
Сообщений: 1,930
21.07.2015, 13:12
Цитата Сообщение от Snayper_ua Посмотреть сообщение
я вичитал, что можно ище как-то:
Serialize & Deserialize
Сериализация - преобразование объекта в массив байт, десериализация - обратный процесс. С передачей массива байт проблем, надеюсь никаких нет. Проблемы могут возникнуть после передачи. Получатель должен знать что за объект был передан и что с ним можно делать. Например, при передаче экземпляра пользовательского класса придётся устраивать танцы с бубном на принимающей стороне.
WCF эту проблему не решит, поскольку эта технология просто инкапсулирует в себе различные способы передачи данных.
1
78 / 78 / 30
Регистрация: 21.05.2015
Сообщений: 257
21.07.2015, 13:21
Лучший ответ Сообщение было отмечено Snayper_ua как решение

Решение

Snayper_ua, если клиент и сервер написаны на c#, то проще всего сериализовать/десериализовать.
Для этого нужно написать класс, который будем передавать по tcp и поместить его в отдельную сборку, эту сборку подключать к проекту сервера и клиента.класс должен иметь атрибут [Serializable]

сериалиазация:
C#
1
2
3
4
5
MyClass someClass = new MyClass();
FileStream fs = new FileStream("lastSession.dat", FileMode.Create, FileAccess.Write, FileShare.ReadWrite);
BinaryFormatter bf = new BinaryFormatter();
bf.Serialize(fs, someClass);
fs.Close();
десериализация:

C#
1
2
3
4
FileStream fs = new FileStream("lastSession.dat", FileMode.Open, FileAccess.Read, FileShare.Read);
BinaryFormatter bf = new BinaryFormatter();
MyClass someClass = (MyClass)bf.Deserialize(fs);
 fs.Close();
1
Заблокирован
21.07.2015, 15:20
Цитата Сообщение от aquaMakc Посмотреть сообщение
Например, при передаче экземпляра пользовательского класса придётся устраивать танцы с бубном на принимающей стороне.
WCF эту проблему не решит, поскольку эта технология просто инкапсулирует в себе различные способы передачи данных.
А для чего же тогда созданы атрибуты:

C#
1
2
3
4
[DataContract]
...
[DataMember]
...
Не подскажете? любезный?

P.S.

Перед тем как давать кому - то советы, почитайте сами про технологию.
1
Заблокирован
21.07.2015, 15:39
Цитата Сообщение от Dmitry_gdv Посмотреть сообщение
А для чего же тогда созданы атрибуты:
Dmitry_gdv, другой тип.
Используя атрибут:
[Serializable],... - используем сериализацию CLR
[DataMember],... - из WCF - сериализация контрактов данных.
0
7 / 7 / 3
Регистрация: 11.01.2011
Сообщений: 73
21.07.2015, 15:41  [ТС]
извените что беспокою, но может есть книга или стаття, где подробно описано как можна переслать object по TCP?
0
Заблокирован
21.07.2015, 15:56
Цитата Сообщение от Ev_Hyper Посмотреть сообщение
сериализация контрактов данных
Так да - то что нужно создавшему эту тему.
То что поможет пропихнуть на сервак или обратно любой кастомный объект.
Как раз на мой взгляд суть вопроса в этом ...
0
Эксперт .NET
 Аватар для insite2012
5548 / 4311 / 1218
Регистрация: 12.10.2013
Сообщений: 12,371
Записей в блоге: 2
21.07.2015, 17:34
Цитата Сообщение от aquaMakc Посмотреть сообщение
WCF эту проблему не решит, поскольку эта технология просто инкапсулирует в себе различные способы передачи данных.
С чего бы? С помощью этой технологии вполне можно передавать пользовательские объекты (хотя, если быть совершенно точным, смысла передавать объекты нет, передается их состояние). Но если понимать это упрощенно - то да, оснастив свой объект атрибутом DataContract (или Serializable), вполне можно передать его от службы к клиенту и назад.

Добавлено через 5 минут
Ev_Hyper, Dmitry_gdv, в WCF можно использовать как атрибут Serializable , так и DataContract-DataMember.
Однако разница тут в том, что, во-первых, с атрибутом Serializable весь класс (или структура) будут участвовать в передаче (вместе со своими полями и т.д), и во вторых, этот атрибут не может определить псевдонимы для имени типа и пространства имен (и еще некоторый свойства).
Как раз для всего этого и были разработаны атрибуты DataContract-DataMember.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
21.07.2015, 17:34
Помогаю со студенческими работами здесь

Как клонировать коллекцию или список объектов?
Есть коллекция (список) объектов. Необходимо создать аналогичную коллекцию (список) объектов. Объекты должны быть разные, а содержимое...

Как сделать так, чтобы при создании объектов,полю присваивалось значение после вызова метода и этот объект добавлялся в коллекцию
Пробовал через конструктор, ног ничего не получается public Tematic(string ck,ArrayList r ){ ck=c; ...

Реализовать движущийся графический объект с помощью статических и динамических объектов
Добрый день. Решаю задачу из методички и поставлена она следующим образом: используя технологию объектно-ориентированного...

Как проверить объект на пустоту или коллекцию на пустоту?
Например, JavaBean, как его проверить, что он пустой? Есть ли универсальная библиотека, которая определяет что объект создан и не...

указатель на объект или подстановка объектов класса
есть вот такая строчка: DataModule.ADOQuery.Locate(...); я не могу разобраться, как подставлять ADOQuery? допустим писать ...


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

Или воспользуйтесь поиском по форуму:
11
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): Реализация движения на Box2D v3 - трение и коллизии с повёрнутыми стенами
8Observer8 20.02.2026
Содержание блога Box2D позволяет легко создать главного героя, который не проходит сквозь стены и перемещается с заданным трением о препятствия, которые можно располагать под углом, как верхнее. . .
Конвертировать закладки radiotray-ng в m3u-плейлист
damix 19.02.2026
Это можно сделать скриптом для PowerShell. Использование . \СonvertRadiotrayToM3U. ps1 <path_to_bookmarks. json> Рядом с файлом bookmarks. json появится файл bookmarks. m3u с результатом. # Check if. . .
Семь CDC на одном интерфейсе: 5 U[S]ARTов, 1 CAN и 1 SSI
Eddy_Em 18.02.2026
Постепенно допиливаю свою "многоинтерфейсную плату". Выглядит вот так: https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11617&stc=1&d=1771445347 Основана на STM32F303RBT6. На борту пять. . .
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу, и светлой Луне. В мире покоя нет и люди не могут жить в тишине. А жить им немного лет.
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила» «Время-Деньги» «Деньги -Пуля»
SDL3 для Web (WebAssembly): Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 12.02.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами и вызывать обработчики событий столкновения. . . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 11.02.2026
Содержание блога Библиотека SDL3 содержит встроенные инструменты для базовой работы с изображениями - без использования библиотеки SDL3_image. Пошагово создадим проект для загрузки изображения. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru