Ru-Board.club
← Вернуться в раздел «Прикладное программирование»

» Отправка record через Serversocket/ClientSocket в Delphi

Автор: cheaterBY
Дата сообщения: 03.10.2006 11:45
Вот есть у меня такой record

type
TRecordList = record
ID,
FAM,
NAME,
OTCH,
TEL_VNUT,
TEL_MOBIL,
E_MAIL : string;
stream : TMemoryStream;
end;

Как его можно переслать через ServerSocket/ClientSocket?

Автор: FireZone
Дата сообщения: 03.10.2006 12:29
cheaterBY
Как блок памяти
Код: Send(Pointer(@MyRec)^, sizeof(MyRec))
Автор: cheaterBY
Дата сообщения: 03.10.2006 12:43
Всё дело в том, что данная запись представляет собой анкету, а в поток я записываю фотографию человека и потом мне всё это дело надо переслать с сервера на клиент. Может тогда кто-нибудь подскажет как это дело проще реализовать?
Автор: OdesitVadim
Дата сообщения: 03.10.2006 13:05
Я бы написал процедуру сохранения в поток (так как, если бы я на винт сохранять решил) и передавал его. На другой стороне - обратный процесс.
Поток лучше создавать TMemoryStream - он предоставляет указатель на начало данных в памяти и размер, которые можно передать
Автор: cheaterBY
Дата сообщения: 03.10.2006 13:53
а по подробнее можно?
Автор: FireZone
Дата сообщения: 03.10.2006 20:22
cheaterBY
Цитата:
а по подробнее можно?
Запаковываем структуру в непрерывный блок данных следующим образом. Пишем в блок длину первой строки - число N (4 байта), пишем в блок саму строку (N байт), пишем в блок длину второй строки - число M (4 байта), пишем в блок саму сроку (M байт), и т.д. Пишем в блок размер данных в TMemoryStream'е, пишем сами данные. Таким образом, получаем непрерывный блок данных, который и посылаем в сокет. Такая структура блока позволит сделать обратные преобразования на приёмной стороне: считываем 4 байта, интерпретируем их как длину первой строки (N), считываем N байт и интерпретируем как саму строку, и т.д.
Автор: vshersh
Дата сообщения: 05.10.2006 09:12
cheaterBY
А еще лучче запакуй все это дело в XML - потом проще расширять будет при необходимости...
Автор: cheaterBY
Дата сообщения: 11.10.2006 00:42
Всем спасибо, я уже разобрался

Страницы: 1

Предыдущая тема: C#: Событие "нажатие кнопки"


Форум Ru-Board.club — поднят 15-09-2016 числа. Цель - сохранить наследие старого Ru-Board, истории становления российского интернета. Сделано для людей.