Главная страница
    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.04 c
1-1093422966
Vadim X
2004-08-25 12:36
2004.09.12
Kylix3


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


9-1085025564
маг Гыр
2004-05-20 07:59
2004.09.12
Фон в игре


1-1093722323
Delphin
2004-08-28 23:45
2004.09.12
Доброго времени суток. Как из ShellListView загрузить


1-1093638711
ИМХО
2004-08-28 00:31
2004.09.12
CLSIDFromProgID и Аутлук





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