Форум по Delphi программированию

Delphi Sources



Вернуться   Форум по Delphi программированию > Все о Delphi > [ "Начинающим" ]
Ник
Пароль
Регистрация <<         Правила форума         >> FAQ Пользователи Календарь Поиск Сообщения за сегодня Все разделы прочитаны

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
  #1  
Старый 28.03.2011, 20:34
Аватар для ALexandr555
ALexandr555 ALexandr555 вне форума
Специалист
 
Регистрация: 09.10.2010
Адрес: Тольятти
Сообщения: 803
Версия Delphi: Delphi 7
Репутация: 2064
По умолчанию Склеить пакеты

Код:
TSendStruct = packed record
  ID: byte;
  mesg: TChat;
  Comand: TDrawCommand
  end;

собственно у меня есть такой пакет, вопрос как мне их несколько (неизвестно колличество) с клеить в один, в дальнейшем уже нужно отправить серверу
cSocket.Socket.SendBuf("склееный пакет","его размер");
Ответить с цитированием
  #2  
Старый 28.03.2011, 20:51
lmikle lmikle вне форума
Модератор
 
Регистрация: 17.04.2008
Сообщения: 8,095
Версия Delphi: 7, XE3, 10.2
Репутация: 49089
По умолчанию

Код:
TSendPacket
  Size : DWORD;
  Count : DWORD;
  Data : Array[0..0] Of TSendStruct; // или Ponter

И посылаешь такую структурку.
Ответить с цитированием
  #3  
Старый 28.03.2011, 21:57
Аватар для ALexandr555
ALexandr555 ALexandr555 вне форума
Специалист
 
Регистрация: 09.10.2010
Адрес: Тольятти
Сообщения: 803
Версия Delphi: Delphi 7
Репутация: 2064
По умолчанию

хм, не совсем понял как же мне их склеивать и как использовать
Код:
Size : DWORD;
  Count : DWORD;
Ответить с цитированием
  #4  
Старый 29.03.2011, 05:42
Аватар для dr. F.I.N.
dr. F.I.N. dr. F.I.N. вне форума
I Like it!
 
Регистрация: 12.12.2009
Адрес: Россия, г. Новосибирск
Сообщения: 663
Версия Delphi: D6/D7
Репутация: 26643
По умолчанию

А зачем их вообще склеивать?
__________________
Грамотно поставленный вопрос содержит не менее 50% ответа.
Грамотно поставленная речь вызывает уважение, а у некоторых даже зависть.
Ответить с цитированием
  #5  
Старый 29.03.2011, 09:10
Аватар для NumLock
NumLock NumLock вне форума
Let Me Show You
 
Регистрация: 30.04.2010
Адрес: Северодвинск
Сообщения: 5,426
Версия Delphi: 7, XE5
Репутация: 59586
По умолчанию

действительно, зачем вообще склеивать пакеты, если протокол tcp может их разбить при передаче)
__________________
Пишу программы за еду.
__________________
Ответить с цитированием
  #6  
Старый 29.03.2011, 14:34
Аватар для ALexandr555
ALexandr555 ALexandr555 вне форума
Специалист
 
Регистрация: 09.10.2010
Адрес: Тольятти
Сообщения: 803
Версия Delphi: Delphi 7
Репутация: 2064
По умолчанию

Мне нужно слать на сервер команды... Я хочу их собирать в кучу все, и слать.. иначе они слишком часто посылаются...
Ответить с цитированием
  #7  
Старый 29.03.2011, 15:09
Аватар для NumLock
NumLock NumLock вне форума
Let Me Show You
 
Регистрация: 30.04.2010
Адрес: Северодвинск
Сообщения: 5,426
Версия Delphi: 7, XE5
Репутация: 59586
По умолчанию

ну так я и объясняю, что протокол tcp может последовательные пакеты склеить или один пакет разбить на несколько!!!
__________________
Пишу программы за еду.
__________________
Ответить с цитированием
  #8  
Старый 29.03.2011, 15:43
Аватар для ALexandr555
ALexandr555 ALexandr555 вне форума
Специалист
 
Регистрация: 09.10.2010
Адрес: Тольятти
Сообщения: 803
Версия Delphi: Delphi 7
Репутация: 2064
По умолчанию

не беда, главное чтобы они у меня слались реже
Ответить с цитированием
  #9  
Старый 29.03.2011, 15:51
Аватар для dr. F.I.N.
dr. F.I.N. dr. F.I.N. вне форума
I Like it!
 
Регистрация: 12.12.2009
Адрес: Россия, г. Новосибирск
Сообщения: 663
Версия Delphi: D6/D7
Репутация: 26643
По умолчанию

Выдержка из Педивикии:
Цитата:
TCP/IP— «гарантированный» транспортный механизм с предварительным установлением соединения, предоставляющий приложению надёжный поток данных, дающий уверенность в безошибочности получаемых данных, перезапрашивающий данные в случае потери и устраняющий дублирование данных. TCP позволяет регулировать нагрузку на сеть, а также уменьшать время ожидания данных при передаче на большие расстояния. Более того, TCP гарантирует, что полученные данные были отправлены точно в такой же последовательности. В этом его главное отличие от UDP.
Не стоит изобретать велосипед. Просто отправляйте и получайте данные, незадумываясь о их "склейке" или "разлепке".
__________________
Грамотно поставленный вопрос содержит не менее 50% ответа.
Грамотно поставленная речь вызывает уважение, а у некоторых даже зависть.
Ответить с цитированием
  #10  
Старый 29.03.2011, 16:24
Аватар для ALexandr555
ALexandr555 ALexandr555 вне форума
Специалист
 
Регистрация: 09.10.2010
Адрес: Тольятти
Сообщения: 803
Версия Delphi: Delphi 7
Репутация: 2064
По умолчанию

мне это не надо, мне нужно только сказать как их сразу кучей отправить, я использую ClientSoket ServerSoket
Ответить с цитированием
  #11  
Старый 29.03.2011, 16:42
Аватар для NumLock
NumLock NumLock вне форума
Let Me Show You
 
Регистрация: 30.04.2010
Адрес: Северодвинск
Сообщения: 5,426
Версия Delphi: 7, XE5
Репутация: 59586
По умолчанию

Код:
type
  TSendStruct = record
...
  end;
var
  FMemoryStream: TMemoryStream;
  data: TSendStruct;
  dummy: Cardinal;
begin
  FMemoryStream:=TMemoryStream.Create;
  try
    FMemoryStream.Write(data, SizeOf(TSendStruct));
    FMemoryStream.Write(data, SizeOf(TSendStruct));
    FMemoryStream.Write(data, SizeOf(TSendStruct));
    FMemoryStream.Write(data, SizeOf(TSendStruct));
    WriteFile(h, FMemoryStream.Memory^, FMemoryStream.Size, dummy, nil);
  finally
    FMemoryStream.Free;
  end;
end;
WriteFile это к примеру!
__________________
Пишу программы за еду.
__________________
Ответить с цитированием
  #12  
Старый 29.03.2011, 17:35
Аватар для ALexandr555
ALexandr555 ALexandr555 вне форума
Специалист
 
Регистрация: 09.10.2010
Адрес: Тольятти
Сообщения: 803
Версия Delphi: Delphi 7
Репутация: 2064
По умолчанию

хм вроде ясно..
както так тогда
потом
Код:
cSocket.Socket.SendBuf(FMemoryStream.Memory^,FMemoryStream.Size);
Ответить с цитированием
  #13  
Старый 30.03.2011, 05:13
Аватар для dr. F.I.N.
dr. F.I.N. dr. F.I.N. вне форума
I Like it!
 
Регистрация: 12.12.2009
Адрес: Россия, г. Новосибирск
Сообщения: 663
Версия Delphi: D6/D7
Репутация: 26643
По умолчанию

Терзает меня сомнение о здравом смысле этой идеи. ALexandr555 ты хоть скажи, какая задача тобой движет?
__________________
Грамотно поставленный вопрос содержит не менее 50% ответа.
Грамотно поставленная речь вызывает уважение, а у некоторых даже зависть.
Ответить с цитированием
  #14  
Старый 30.03.2011, 08:07
Аватар для ALexandr555
ALexandr555 ALexandr555 вне форума
Специалист
 
Регистрация: 09.10.2010
Адрес: Тольятти
Сообщения: 803
Версия Delphi: Delphi 7
Репутация: 2064
По умолчанию

в личку тогда...
Ответить с цитированием
Ответ


Delphi Sources

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB-коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход


Часовой пояс GMT +3, время: 05:13.


 

Сайт

Форум

FAQ

Соглашения

Прочее

 

Copyright © Форум "Delphi Sources" by BrokenByte Software, 2004-2025