Вниз
Скачать: 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 вся ветка

Скачать: CL | DM;



Память: 0.45 MB
Время: 0.011 c
6-1176925891
Dmitry_177
2007-04-18 23:51
2007.12.30
При изменении порта или ip-адреса нужно ли пересоздавать сокет?


15-1196343324
Slider007
2007-11-29 16:35
2007.12.30
С днем рождения ! 29 ноября 2007 четверг


11-1182270397
St33l
2007-06-19 20:26
2007.12.30
автоскрытие формы


15-1196342882
моряк
2007-11-29 16:28
2007.12.30
как стать нормальным программистом!


2-1196509776
Виктор007
2007-12-01 14:49
2007.12.30
Можно ли заставить дельфи создавать pdb файлы?




   Наверх