Вниз
Скачать: 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 вся ветка

Скачать: CL | DM;



Память: 0.45 MB
Время: 0.012 c
3-100556
Till
2003-07-08 08:40
2003.07.31
FastReport генерация отчета на основе SQL запроса


3-100597
urich
2003-07-09 10:30
2003.07.31
Перенос таблицы из одной БД в другую


14-100882
Basja
2003-07-16 09:00
2003.07.31
про свичи


1-100809
Alexxxx
2003-07-16 16:23
2003.07.31
прозрачный WebBrowser


4-101015
VP
2003-05-26 11:29
2003.07.31
ShellExecute ???????????




   Наверх