![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Определение переданной информации TWinSocketStream [D7, WinXP]
sashap © (2008-06-15 10:44:00)Добрый день!
...и сразу к делу!
Есть TClientSocket и TServerSocket в блокирующем режиме. Клиент коннектится к серверу и передает много больший файлов.
Вот кусок из кода клиента:
...
var
SocketStream:TWinSocketStream;
FS:TFileStream;
begin
...
SocketStream:= TWinSocketStream.Create(ClientSocket^.Socket,10000);
...
for i:= 1 to file_count do
try
FS:= TFileStream.Create(filenames[i], fmOpenRead);
SocketStream.CopyFrom(FS, FS.Size);
finally
FS.Free;
end;
...
end;
У клиента также есть Timer, который каждую секунду выводит на StatusBar'e количество отправленных байт. Как можно узнать это в процессе передачи файла (т.к. он очень большой, для того, чтобы ждать окончания передачи)?
Я пробовал FS.Position и SocketStream.Size, но они не подходят...
sashap (2008-06-15 19:23:00) [1]Огромное спасибо!
Теперь все работает отлично!
Сергей М. (2008-06-15 16:01:00) [2]
> Можно ли в процессе работы TWinSocketStream'а узнать, сколько
> байт он отослал?
см. [1]
> Или, Можно ли узнать, на какой стадии находится передача
> TFileStream
Тоже самое, но перекрывать следует Read
sashap (2008-06-15 15:59:00) [3]Спасибо за ответ! =)
Перефразированный вопрос:
Можно ли в процессе работы TWinSocketStream'а узнать, сколько байт он отослал? Или, Можно ли узнать, на какой стадии находится передача TFileStream (TFileStream.Position не работает)?
Извините, что неправильно выразился.
Сергей М. (2008-06-15 15:33:00) [4]Следует пользовать своего наследника класса TWinSocketStream с перекрытым вирт.методом Write, в теле которого вызывается метод предка, параметры и результат вызова которого дают исчерпывающую инф-цию по интересующему вопросу.