Форум: "Сети";
Текущий архив: 2004.09.12;
Скачать: [xml.tar.bz2];
ВнизВопрос про Сокеты и размер блока Найти похожие ветки
← →
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;
Скачать: [xml.tar.bz2];
Память: 0.46 MB
Время: 0.035 c