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

Вниз

Вопрос про Сокеты и размер блока   Найти похожие ветки 

 
Iraizor ©   (2004-07-08 13:15) [0]

Здравствуйте, уважаемые Мастера !!! Я отсылаю файл SendStream"ом и у меня возник вопрос : можно ли узнать размер блока который был отослан, на OnWrite ? Компоненты Tserversocket & Tclientsocket


 
Digitman ©   (2004-07-08 13:30) [1]


> можно ли узнать размер блока который был отослан, на OnWrite
> ?


нельзя.
во-первых, потому что OnWrite не возникает до тех пор пока весь стрим не будет помещен в очередь на передачу

ао-вторых, успешное выполнение ЛЮБОГО send-метода не есть признак фактического получения данных принимающей стороной, т.е. термин "блок отослан" нельзя трактовать как "блок фактически доставлен"


 
Iraizor ©   (2004-07-08 13:54) [2]

Мне не нужно узнавать доставлен блок или нет, мне просто нужно узнать сколько байт было отправлено в сокет на этот раз, мне это нужно для ProgressBar


 
Digitman ©   (2004-07-08 14:01) [3]

ах вон оно что !

создай наследника своего наследника TStream, перекрой у него метод Read (он виртуальный) - будешь иметь полный контроль над считыванием компонентом TCustomWinSocket порций данных из твоего стрима


 
Iraizor ©   (2004-07-08 14:19) [4]

Digitman ©  
Простите меня, нуба, но как перекрыть метод и как после выполнения сего действия его использовать ? Я никогда с подобными задачами не сталкивался =(


 
Reindeer Moss Eater ©   (2004-07-08 14:21) [5]

Тогда уж проще отказаться от потока и использовать поблочную передачу


 
Digitman ©   (2004-07-08 14:34) [6]


> как перекрыть метод


TMyStream = class(TMemoryStream)
protected
function Read(var Buffer; Count: Longint): Longint; override;
end;

function TMyStream.Read(var Buffer; Count: Longint): Longint;
begin
 Result := inherited Read(Buffer, Count);
 ShowMessage("Из потока считано " + IntToStr(Result) + " байт");
end;

...

ms := TMyStream.Create;
...

mysocket.socket.sendstream(ms);


 
Iraizor ©   (2004-07-08 15:14) [7]

Огромное спасибо за подсказку! Сейчас же попробую !


 
Digitman ©   (2004-07-08 15:23) [8]


> спасибо за подсказку


подсказка-то уже была в [3] .. а это - уже разжевывание прописных истин ObjectPascal, не имеющих никакого отношения конкретно к гнездам


 
Ozone ©   (2004-07-09 06:40) [9]

Как вариант - посылать размер (в виде строки) перед передачей фала.


 
Digitman ©   (2004-07-09 08:04) [10]


> Ozone ©   (09.07.04 06:40) [9]


автору нужно организовать индикатор на передающей, а не на принимающей стороне



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

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

Наверх




Память: 0.49 MB
Время: 0.021 c
1-1093502344
*Pavel
2004-08-26 10:39
2004.09.12
Скрипты


1-1093439848
Chlavik
2004-08-25 17:17
2004.09.12
OVERLAPED и CreatePipe


1-1093829642
vovchik
2004-08-30 05:34
2004.09.12
Русская кодировка


3-1092395223
REA
2004-08-13 15:07
2004.09.12
Маленький ComboBox


4-1090904332
artem123
2004-07-27 08:58
2004.09.12
Нестандартный вид TreeView