Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2007.12.30;
Скачать: CL | DM;

Вниз

Размер отылаемого за раз пакета данных через TCustomWinSocket   Найти похожие ветки 

 
DelphiN!   (2007-12-07 08:01) [0]

Отсылаю данные следующей процедурой:


function SendStream(var Socket: TCustomWinSocket; Stream: TStream): Boolean;
var
 i: integer;
 buff: array[0..1024] of byte;
begin
  Stream.Position:=0;
  repeat
    i:=Stream.Read(buff,1024);
    while Socket.SendBuf(buff,i)=-1 do
  until i=0;
end;


Размер отсылаемой за раз "порции" данных 1024 байта. Оптимален ли этот размер? Либо нужно поставить какой либо другой.

Программа отсылает в основном текстовую информацию(HTML страницы). Размер которых в большинстве случаев около 100 килобайт. Максимальный же размер может быть несколько мегабайт.

Также, допустимо ли данное выражение while Socket.SendBuf(buff,i)=-1 do, либо оно может привести к зацикливанию программы в определённой ситуации?


 
Сергей М. ©   (2007-12-07 08:16) [1]


> 1024 байта. Оптимален ли этот размер?


Оптимальным, imho, будет размер, возвращаемый ф-цией GetSockOpt(..SO_SNDBUF..)


> допустимо ли данное выражение while Socket.SendBuf(buff,
> i)=-1 do


Допустимо.

Но в блокирующем режиме в нем нет никакой надобности.

А собссно к чему все это ? Есть же штатный метод SendStream, он чем не угодил ?


 
DelphiN!   (2007-12-07 09:07) [2]


> Сергей М. ©   (07.12.07 08:16) [1]


Если использовать SendStream то нижняя часть больших HTML документов (больше 100 кб например) не отсылается клиенту. После того как я переделал на отсылку частями через SendBuff документы отсылаются полнойстю


 
Сергей М. ©   (2007-12-07 09:11) [3]


> DelphiN!   (07.12.07 09:07) [2]


Просто у тебя ошибка в 17-й строке, вот потому и "не отсылается")

Не вижу никакого резона изобретать свой SendStream, в то время как штатный одноименный метод работает корректно и успешно.



Страницы: 1 вся ветка

Текущий архив: 2007.12.30;
Скачать: CL | DM;

Наверх




Память: 0.47 MB
Время: 0.018 c
6-1177336439
socket
2007-04-23 17:53
2007.12.30
TServerSocket and TClientSocket


2-1196840983
Ekzot
2007-12-05 10:49
2007.12.30
Как Подсветать определённые слова в RichEdit


2-1196930572
LerMax
2007-12-06 11:42
2007.12.30
Вопрос про ссылку в классе


2-1197003662
DelphiN!
2007-12-07 08:01
2007.12.30
Размер отылаемого за раз пакета данных через TCustomWinSocket


15-1196417433
em240
2007-11-30 13:10
2007.12.30
Удаленный помощник+динамическое создание файла приглашения