Форум: "Сети";
Текущий архив: 2011.09.11;
Скачать: [xml.tar.bz2];
ВнизПроблемы с передачей файла от сервера клиенту и наоборот Найти похожие ветки
← →
dron9999 © (2009-05-03 18:23) [0]Привет ! всем прошу помочь разобраться с такой проблемой ! нашел пример для пересылки файла но почему то когда передаю файл клиенту то приходит не весь размер файла не хватает 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;
{$i+ } Reset(TInfo^.BFile); {$i- }
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;
------------------------------------------------
может чего не увидел !
← →
Сергей М. © (2009-05-03 21:48) [1]Что лично ты сделал для того чтобы "разобраться с проблемой" ?
Какие конкретно усилия и действия для понимания и отладки чужого кода ты предпринял ?
← →
dron9999 © (2009-05-04 07:27) [2]извиняюсь не правильно выложил код
Ошибка в Constant expression violates subrange bounds
begin
AssignFile(TInfo^.BFile,TInfo^.LocalFile);
FileMode:=ofOpenRead; <---------------- ошибка
{$i+ } Reset(TInfo^.BFile); {$i- }
думаю нужно указать в Constant
ну пример
const
ofOpenRead = $????????;
буду искать спс !
← →
dron9999 © (2009-05-04 09:12) [3]Нет не получается в KOL.pas
есть вот это
//[OpenFile CONSTANTS]
const
ofOpenRead = {$IFDEF LIN} O_RDONLY {$ELSE} $80000000 {$ENDIF};
{* Use this flag (in combination with others) to open file for "read" only. }
то есть...
const
ofOpenRead = $00000008 ;
--------------------------------
но при закачки
на клиент останавливается на 99% =( 12,5 МБ (13 194 481 байт) из 12,5 МБ (13 194 592 байт)
на сервер файл не закачивается 0 из 12,5 МБ (13 194 592 байт)
← →
Сергей М. © (2009-05-04 09:42) [4]см. [1]
Страницы: 1 вся ветка
Форум: "Сети";
Текущий архив: 2011.09.11;
Скачать: [xml.tar.bz2];
Память: 0.46 MB
Время: 0.003 c