Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

ServerSocket и ClientSocket [D7, Win2k]


ZSergey ©   (2005-07-27 11:13:00) 

Здравствуйте уважаемые знатоки.
помогите новичку.
Я пишу сетевое приложение на основе компонентов ServerSocket и ClientSocket. По ходу работы возник вопрос: нельзя ли сделать так:

Объявляю запись, например
.......................
Packet.Command := 'go';
Packet.X := 10;
Packet.Y := 20;
......................  
и потом все это дело махом отправляю на сервер
(образно :))
Clientsocket1.Socket.SendText(Packet);
и чтоб потом Сервер прочилал эту структуру.
Возможно ли используя эти компоненты делать подобные вещи, или в сокеты посылаются только строки ??


Anatoly Podgoretsky   (2005-07-30 13:43:00) [1]

ZSergey   (27.07.05 11:13)  
Какой еще SendText для двоичных данных


FireMan_Alexey   (2005-07-30 13:18:00) [2]

Удалено модератором


Alexey_FireMan   (2005-07-28 15:52:00) [3]

>Digitman
Я с Вами согласен!
Это было написано для предотвращения последующих вопросов...


Digitman   (2005-07-28 15:44:00) [4]


> Alexey_FireMan   (28.07.05 14:27) [2]



> иначе твой пакет может приходить кусками


и что в этом страшного  ?

поток есть поток ... если протоколом инф.обмена предусмотрен префикс (фикс.размера) размера инф.сообщения некоего данного вида, принимающая сторона всегда сможет (и должна !) аккумулировать последовательные фрагменты принимаемого ей потока данных до достижения заранее известного ей суммарного размера ожидаемого инф.сообщения


Alexey_FireMan   (2005-07-28 14:27:00) [5]

Просто когда будеш принимать как описано в [1], то надо проверять
что
...Socket.ReceiveLength>=SizeOf(TPacket)
иначе твой пакет может приходить кусками!


Digitman   (2005-07-27 11:28:00) [6]


> Возможно ли используя эти компоненты делать подобные вещи


возможно.

PPacket = ^TPacket;
TPacket = packed array
 Command: string[MAX_LENGTH_OF_YOUR_COMMAND_STRING];
 X,Y: Integer;
end;

..

var
 Packet: TPacket;

..

Результат :=Clientsocket1.Socket.SendBuf(Packet, SizeOf(Packet));


Наверх

Титульная страница Поиск, карта сайта Написать письмо