Форум: "Сети";
Текущий архив: 2010.02.28;
Скачать: [xml.tar.bz2];
ВнизОпределение переданной информации TWinSocketStream Найти похожие ветки
← →
sashap (2008-06-15 10:44) [0]Добрый день!
...и сразу к делу!
Есть 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, но они не подходят...
← →
Сергей М. © (2008-06-15 15:33) [1]Следует пользовать своего наследника класса TWinSocketStream с перекрытым вирт.методом Write, в теле которого вызывается метод предка, параметры и результат вызова которого дают исчерпывающую инф-цию по интересующему вопросу.
← →
sashap (2008-06-15 15:59) [2]Спасибо за ответ! =)
Перефразированный вопрос:
Можно ли в процессе работы TWinSocketStream"а узнать, сколько байт он отослал? Или, Можно ли узнать, на какой стадии находится передача TFileStream (TFileStream.Position не работает)?
Извините, что неправильно выразился.
← →
Сергей М. © (2008-06-15 16:01) [3]
> Можно ли в процессе работы TWinSocketStream"а узнать, сколько
> байт он отослал?
см. [1]
> Или, Можно ли узнать, на какой стадии находится передача
> TFileStream
Тоже самое, но перекрывать следует Read
← →
sashap (2008-06-15 19:23) [4]Огромное спасибо!
Теперь все работает отлично!
Страницы: 1 вся ветка
Форум: "Сети";
Текущий архив: 2010.02.28;
Скачать: [xml.tar.bz2];
Память: 0.45 MB
Время: 0.004 c