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

Вниз

Пересылка через сокеты   Найти похожие ветки 

 
Олег_Иванов   (2007-08-24 08:55) [0]

Уважаемые мастера.
Вот работаю пересылкой данных через сокеты, хочу не использовать  Stream, а работать через файлы. Как можно увеличить значение указателя на нужное значение и передать новое значение указателя.
Вот недоработанный код:

type
  PInfo = ^TInfo;
  TInfo = record
     Size:Int64;
     Title:array[0..255] of char;
     Data:Pointer;
  end;

procedure TForm1.Button1Click(Sender: TObject);
var
  f:file;
  Size,Send:Integer;
  pf:PInfo;
  Buffer:array[0..4095] of Byte;
  Count:Integer;
begin
  pf:=nil;
  Count:=0;
  if not OpenDialog1.Execute then Exit;
  Edit1.Text:=OpenDialog1.FileName;
  AssignFile(f,OpenDialog1.FileName);
  if FileExists(OpenDialog1.FileName) then
     Reset(f,1)
  else
     Rewrite(f,1);
  Size:=FileSize(f);
  try
     New(pf);
     GetMem(pf.Data,Size);
     StrPCopy(pf^.Title,OpenDialog1.FileName);
     pf^.Size:=FileSize(f);
     BlockRead(f,pf^.Data^,Size);
     repeat
        Inc(Count);
        //Как сделать,чтобы значение указателя перешагнуло на Sizeof(Buffer) единиц
        //и SendBuf отправил новое значение Buffer????
       // Move(pf^.Data^,Buffer,Sizeof(Buffer));
        Send:=ServerSocket1.Socket.Connections[0].SendBuf(Buffer,Sizeof(Buffer));
     until
        Count = 2;
  finally
     FreeMem(pf.Data,Size);
     Dispose(pf);
     CloseFile(f);
  end;
end;


 
umbra ©   (2007-08-24 09:09) [1]

ничего не понял. О каком указателе идет речь?


 
Leonid Troyanovsky ©   (2007-08-24 10:28) [2]


> Олег_Иванов   (24.08.07 08:55)  

> Вот работаю пересылкой данных через сокеты, хочу не использовать
> Stream, а работать через файлы.

Все уже украдено до нас.
См. ftp.

--
Regards, LVT.


 
tesseract ©   (2007-08-24 10:44) [3]


>         //Как сделать,чтобы значение указателя перешагнуло
> на Sizeof(Buffer) единиц         //и SendBuf отправил новое
> значение Buffer????


Зачем ? И почему blockread не в цикле ?.


 
Сергей М. ©   (2007-08-24 13:42) [4]


> хочу не использовать  Stream, а работать через файлы


Чем не устроил TFileStream или его наследник ?


 
Олег_Иванов   (2007-08-24 14:13) [5]

Если пишешь на WinAPI, не хочу использваоть классы, чтобы размер EXE был большим.


 
Сергей М. ©   (2007-08-24 14:17) [6]


> Если пишешь на WinAPI, не хочу использваоть классы, чтобы
> размер EXE был большим


Так ведь TServerSocket тоже класс)..

Сам ведь себе противоречишь..


 
Сергей М. ©   (2007-08-24 14:32) [7]


> Send:=ServerSocket1.Socket.Connections[0].SendBuf(Buffer,
> Sizeof(Buffer));


И вновь те же грабли - результат send"а никак не анализируется.



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

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

Наверх




Память: 0.48 MB
Время: 0.017 c
15-1207988786
vrem_
2008-04-12 12:26
2008.05.25
Опять атакует!!


15-1207823137
Kolan
2008-04-10 14:25
2008.05.25
Интересно, а можно посмотреть Compiler Magic?


2-1209395086
Kolan
2008-04-28 19:04
2008.05.25
Как узнать вызоту заголовка окна?


3-1197290014
Kolan
2007-12-10 15:33
2008.05.25
Как сделать Data Transformation, чтобы указывать любой сервер?


2-1209202616
snake-as
2008-04-26 13:36
2008.05.25
Обрезать число