Главная страница
    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.47 MB
Время: 0.029 c
4-1090878975
g-l-u-k
2004-07-27 01:56
2004.09.12
Сравнение файлов на winapi и поиск различий


6-1087974793
ИМХО
2004-06-23 11:13
2004.09.12
Спецам по TWebBrowser у


6-1089041475
Don
2004-07-05 19:31
2004.09.12
Расшарить диск


1-1093460903
Joker
2004-08-25 23:08
2004.09.12
помогите написать шифровальщик


1-1093367918
Реактор
2004-08-24 21:18
2004.09.12
Нажатие клавиши Enter





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