Конференция "Сети" » Определение переданной информации TWinSocketStream [D7, WinXP]
 
  • sashap (15.06.08 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, но они не подходят...
  • Сергей М. © (15.06.08 15:33) [1]
    Следует пользовать своего наследника класса TWinSocketStream с перекрытым вирт.методом Write, в теле которого вызывается метод предка, параметры и результат вызова которого дают исчерпывающую инф-цию по интересующему вопросу.
  • sashap (15.06.08 15:59) [2]
    Спасибо за ответ! =)

    Перефразированный вопрос:
    Можно ли в процессе работы TWinSocketStream'а узнать, сколько байт он отослал? Или, Можно ли узнать, на какой стадии находится передача TFileStream (TFileStream.Position не работает)?

    Извините, что неправильно выразился.
  • Сергей М. © (15.06.08 16:01) [3]

    > Можно ли в процессе работы TWinSocketStream'а узнать, сколько
    > байт он отослал?


    см. [1]


    >  Или, Можно ли узнать, на какой стадии находится передача
    > TFileStream


    Тоже самое, но перекрывать следует Read
  • sashap (15.06.08 19:23) [4]
    Огромное спасибо!
    Теперь все работает отлично!
 
Конференция "Сети" » Определение переданной информации TWinSocketStream [D7, WinXP]
Есть новые Нет новых   [134432   +19][b:0][p:0.001]