Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2003.07.31;
Скачать: CL | DM;

Вниз

Переслать файл без TfileStream   Найти похожие ветки 

 
Beregin   (2003-05-25 16:13) [0]

Использую TServerSocket и TClientSocket. Необходимо считывать файл по куска (каждый считанный кусок шифровать – но это к делу не относиться) и пересылать каждый кусок на сервер. Поэтому пересылать как файловый поток не могу (или не прав?)
На стороне клиента делаю:

var ln: Integer;
data: PByte;
inFile file;
begin
ln:=512;
AssignFile(inFile, "test.rar");
reset(inFile, 1);
GetMem(data, ln);
while not eof(inFile) do
begin
BlockRead(inFile, data^, 512, ln);
ClientSoket.Socket.SendBuf(data^,ln);
end;
FreeMem(data);
CloseFile(inFile);

End;

На сервере в событие ClientRead ловлю:
var ln: Integer;
buf: PChar;
src : TFileStream;
begin
ln := Socket.ReceiveLength;
GetMem(buf,ln);
Socket.ReceiveBuf(buf^,ln);
src := TFileStream.Create("test.rar",fmOpenReadWrite);
src.Seek(0,soFromEnd);
src.WriteBuffer(buf^,ln);
src.Free;
FreeMem(buf);
end;

Но приходит только первые 30-60 килобайт. Притом каждый раз по разному – и не понятно от чего зависит. И где у меня руки кривые? Помогите люди добрые.


 
Digitman ©   (2003-05-26 09:18) [1]

1. TClientSoket.ClientType = ctNonBlocking или ctBlocking ?

2. SendBuf() - это функция ! А функция, как известно, возвращает результат. Где анализ результата ее выполнения ?

3. ln := Socket.ReceiveLength;
А если в результате выполнения этой строчки ln = 0 ? Каков тогда смысл дальнейших действий ?

4. Где обработка исключений в теле OnClientRead()

5. Если TClientSoket.ClientType = ctNonBlocking, то - где обработка события OnWrite() ?




Страницы: 1 вся ветка

Текущий архив: 2003.07.31;
Скачать: CL | DM;

Наверх




Память: 0.47 MB
Время: 0.023 c
4-101040
Avers
2003-05-29 15:58
2003.07.31
Выбор папок из текущего каталога


4-101043
tamerlan311
2003-05-26 19:58
2003.07.31
tray


14-100932
copyr25
2003-07-11 22:01
2003.07.31
Кто, по Вашему, будет Президентом в России? В 2008-м году?


4-101023
Lefan
2003-05-27 06:27
2003.07.31
Закрыть программу


3-100599
denis555
2003-07-09 12:17
2003.07.31
логин BDE в Delhi4