Привет ! всем прошу помочь разобраться с такой проблемой ! нашел пример для пересылки файла но почему то когда передаю файл клиенту то приходит не весь размер файла не хватает 200 -150 байт
Вот сам код ! .....
сервер...
-----------------------------------
procedure TForm1.SSClientRead(Sender: PObj; Socket: PCustomWinSocket);
var
TInfo:PTrasnferInfo;
p,r:Integer;
Dta,f:string;
Buffer:array [1..200] of Char;
begin
Dta:=Socket.ReceiveText;
if Socket.Data = nil then
begin
try
New(TInfo);
f:=Chr(13);
p:=Pos(f,Dta);
TInfo^.LocalFile:=Copy(Dta,1,p -1);
TInfo^.Action:=TTransferAction(Str2Int(Copy(Dta,p + 1,Length(Dta))));
if TInfo^.Action = taDownload1 then
begin
AssignFile(TInfo^.BFile,TInfo^.LocalFile);
FileMode:=ofReadOnly;
Reset(TInfo^.BFile);
end
else if TInfo^.Action = taUpload1 then
begin
AssignFile(TInfo^.TFile,TInfo^.LocalFile);
ReWrite(TInfo^.TFile);
CloseFile(TInfo^.TFile);
end;
Socket.Data:=TInfo;
if TInfo^.Action = taDownload1 then
Socket.SendText(Int2Str(FileSize(TInfo^.LocalFile)))
else
if TInfo^.Action = taUpload1 then
Socket.SendText('C');
except
Socket.SendText('Can''t access file...');
Exit;
end;
end
else
begin
TInfo:=Socket.Data;
if TInfo^.Action = taDownload1 then
begin
p:=FilePos(TInfo^.BFile);
BlockRead(TInfo^.BFile,Buffer,200,r);
r:=FileSize(TInfo^.LocalFile);
Dta:=string(Buffer);
if (r - p) < 200 then
Dta:=Copy(Dta,200,r - p);
Socket.SendText(Dta);
end
else
if TInfo^.Action = taUpload1 then
begin
Write(TInfo^.TFile,Dta);
Socket.SendText('C');
CloseFile(TInfo^.TFile);
end;
end;
end;
------------------------------------------------
может чего не увидел !