Главная страница
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.042 c
14-1093061627
able
2004-08-21 08:13
2004.09.12
Ну вот.. выходные... форум отдыхает :(


1-1093410172
TankMan1
2004-08-25 09:02
2004.09.12
Как запустить приложение с параметром? :)


4-1091311946
BaG
2004-08-01 02:12
2004.09.12
Автоматическое включение компьютера


14-1093516749
Micah'GF
2004-08-26 14:39
2004.09.12
Ищу аналог Visio


1-1093506999
SPy
2004-08-26 11:56
2004.09.12
TShellListView - стандартное popupmenu