Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Начинающим";
Текущий архив: 2007.12.30;
Скачать: [xml.tar.bz2];

Вниз

Размер отылаемого за раз пакета данных через 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;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.45 MB
Время: 0.009 c
2-1197020808
Кевларвестов Семен
2007-12-07 12:46
2007.12.30
Передача между variant ами значения 0000 как строки


11-1169739965
Виталий*
2007-01-25 18:46
2007.12.30
Помогите с юникодом пожалуйста


15-1196196390
gotik
2007-11-27 23:46
2007.12.30
Кто был в Тайланде?


15-1196324825
Kerk
2007-11-29 11:27
2007.12.30
Идентификация пользователя


15-1196498342
Valeo
2007-12-01 11:39
2007.12.30
Нужна Помощь





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский