Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > C++ Builder > Server Socet


Автор: NightXXX 8.5.2007, 21:15
Подскажите пожайлуста как можно передать данные от сервера клиенту, обратно я сделал, сервак не хочет отправлять какими функциями отправлять данными!!! 
Буду благодарен за помощь, или хотя бы за какую нибудь подсказку.

Автор: NightXXX 22.5.2007, 20:37
Тут что никто не пользуется TCP/IP Socket

    Socket->SendBuf(void *,int) 

Вот функция для передаци данных буферизованных
Подскажите как передать весь класс,т.е. его данные? 
Чего то мне в голову ничего не приходит! 

Автор: Snowy 22.5.2007, 20:44
Цитата(NightXXX @  22.5.2007,  20:37 Найти цитируемый пост)
Server Socet
Что делает?

Цитата(NightXXX @  22.5.2007,  20:37 Найти цитируемый пост)
Подскажите как передать весь класс,т.е. его данные? 
Очень сильно зависит от того, какой класс и кто его родитель...
Чтобы передать класс, нужно сначала его сериализовать в стрим, а потом передать этот стрим.
На другой стороне десериализовать.
Сериализуются только published проперти.
У TComponent есть для этого методs SaveToStream и LoadFromStream.

Автор: NightXXX 22.5.2007, 21:00
Допускаем что у класса нет родителей.
Вот пример : 

class TStudent
{
 private:
 public:
    unsigned int ID;
    AnsiString name;
    AnsiString file;
    AnsiString num;
};

как вы говорите это записать в стрим и что это такое в двух словах?
Не могли бы вы пример показать как это сработает на передачу и на прием?

Автор: Snowy 22.5.2007, 21:19
Так не бывает, чтоб родителей совсем не было...
Если родитель не указан, значит это TClass.
Данный пример автоматом не сериализуется, т.к. не имеет RTTI информации.
Для сериализации автоматом, родителем должен быть минимум TPersistent. Но с ним придёться ещё побороться.
Если родитель TComponent, то у него уже есть всё необходимое.
В любом случае, для автоматической сериализации требуется RTTI информация. Поэтому все поля должны быть published.
Но можно и без этого обойтись - записать все поля вручную - последовательно каждое поле.
Для этого потребуется TMemoryStream и TWriter.
Для чтения соответственно TMemoryStream и TReader.
Примеры и описание есть в любой толковой книжке.
Также можно попробовать поиск и справку.
Ну а с передачей стрима, надеюсь, проблем не возникнет...
Пример накидать мне слабо - не силён в плюсах smile 

Автор: Anikmar 22.5.2007, 21:24
Цитата(Snowy @  22.5.2007,  21:19 Найти цитируемый пост)
Так не бывает, чтоб родителей совсем не было...
Если родитель не указан, значит это TClass.

Это в смысле как? Если класс собственный и ни от кого не наследуется, откуда у него родитель по-умолчанию? 

Автор: NightXXX 22.5.2007, 21:24
Спасибо ща просмотрим что да как!

Автор: Snowy 22.5.2007, 22:04
Цитата(Anikmar @  22.5.2007,  21:24 Найти цитируемый пост)
Если класс собственный и ни от кого не наследуется, откуда у него родитель по-умолчанию? 
От борланда ;-)
Все объекты изначально произведены от TObject, классы от TClass, интерфейсы от IInterface.
Если мы явно никого не прописываем, то предки именно они...

Автор: Anikmar 23.5.2007, 08:57
Цитата(Snowy @  22.5.2007,  22:04 Найти цитируемый пост)
От борланда ;-)
Все объекты изначально произведены от TObject, классы от TClass, интерфейсы от IInterface.
Если мы явно никого не прописываем, то предки именно они... 

Поясните, пожалуйста, мне что-то не понятно:
1. Чем объекты отличаются от классов согласно вашему высказыванию
2. Что это за класс TClass и какие у него есть члены
3. Если я объявляю в своей программе собственный класс без всяких родителей, то значит по-умолчанию я его наследую от родителя TClass? И значит я могу пользоваться какими-то его полями/методами/свойствами и т.п.?  А какими?


Автор: Snowy 23.5.2007, 10:49
Anikmar, если работодатель узнает, что ты не знаешь таких вещей... smile 
1. Класс - описатель объектов.
Объект - инстанс класса. То есть непосредстверро экземпляр класса.
Например TButton - класс. А Button1, Button2 и т.д. - это объекты-экземпляры класса TButton.
2. TClass - класс для TObject. По сути TClass = class of object; Всё, что он умеет - описано у TObject, а он просто представляет собой его класс.
3. Да. Какими? Смотри справку или просто попробуй autocomplite. Создай экземпляр пустого класса и попробуй вызвать любой его метод - автокомплит подскажешь, что ты можешь вызвать...

Добавлено через 44 секунды
Лекцию читал Snowy. smile

Автор: HappyLife 23.5.2007, 11:21
Snowy, это не дельфи, расслабься)
Челу тупо нужно создать структуру и передать её.

struct Data
{
    unsigned int ID;
    char name[50];
    char file[50];
    char num[50];
};

Data data;

 Socket->SendBuf(&data,sizeof(data)) ;


Автор: Anikmar 23.5.2007, 14:42
Snowy, может в дельфи это и так, но с Си++ никаких родителей по умолчанию нет. По крайней мере я их не обнаружил.

Лекцию слушал Anikmar
 smile 

Автор: NightXXX 24.5.2007, 00:54
Цитата

 Socket->SendBuf(&data,sizeof(data)) ;


Вот таким образом у меня структура не передается, приходит только один параметр а остальные куда то теряются!((( не могу понять почему!(

Автор: HappyLife 24.5.2007, 15:12
NightXXX, 
Все верно. Данные сразу все не приходят.
И не передавай AnsiString....!

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)