Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Сети";
Текущий архив: 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
4-1090748838
MENfromUSA
2004-07-25 13:47
2004.09.12
Как засунуть в трэй иконку API-программы?


4-1091194337
nexxiss
2004-07-30 17:32
2004.09.12
ALT+TAB


1-1093858255
mgFox
2004-08-30 13:30
2004.09.12
stdcall и cdecl


1-1093429332
P@vel
2004-08-25 14:22
2004.09.12
Bufer


14-1093445329
Empleado
2004-08-25 18:48
2004.09.12
Может ли кто мне объяснить понятие слова "акриловый"?





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский