
14.12.2011, 09:02
|
 |
Let Me Show You
|
|
Регистрация: 30.04.2010
Адрес: Северодвинск
Сообщения: 5,426
Версия Delphi: 7, XE5
Репутация: 59586
|
|
Код:
FileStreamSize: Integer;
FileNum: Integer;
FileStream: TFileStream;
FileTotalRead: Integer;
procedure SendFile(FileName: String);
procedure Button1Click(Sender: TObject);
procedure TForm1.Button1Click(Sender: TObject);
begin
SendFile('g:\__Data\22112011111.jpg');
SendFile('g:\__Data\23112011113.jpg');
end;
procedure TForm1.IdUDPServer1UDPRead(Sender: TObject; AData: TStream;
ABinding: TIdSocketHandle);
var
Buffer: array of Byte;
Len: Integer;
begin
Len:=AData.Size;
if Len=0 then Exit;
SetLength(Buffer, Len);
if FileStreamSize=-1 then
begin
FileStream:=TFileStream.Create('d:\Downloads\'+IntToStr(FileNum)+'.jpg', fmCreate);
Inc(FileNum);
AData.ReadBuffer(Buffer[0], Len);
FileStreamSize:=PInteger(@Buffer[0])^;
FileTotalRead:=0;
Memo1.Lines.Add('>> '+IntToStr(FileStreamSize));
end else
begin
Len:=AData.Read(Buffer[0], Len);
Inc(FileTotalRead, Len);
FileStream.Write(Buffer[0], Len);
if FileTotalRead=FileStreamSize then
begin
FileStream.Free;
FileStreamSize:=-1;
Memo1.Lines.Add('<<');
end;
end;
end;
procedure TForm1.SendFile(FileName: String);
var
FileStream: TFileStream;
Buffer: array [0..$fff] of Byte;
Len: Integer;
begin
FileStream:=TFileStream.Create(FileName, fmOpenRead);
try
PInteger(@Buffer[0])^:=FileStream.Size;
IdUDPClient1.SendBuffer('10.162.48.4', IdUDPClient1.Port, Buffer[0], SizeOf(Integer));
repeat
Len:=FileStream.Read(Buffer[0], Length(Buffer));
IdUDPClient1.SendBuffer('10.162.48.4', IdUDPClient1.Port, Buffer[0], Len);
Application.ProcessMessages;
Sleep(10);
until Len=0;
finally
FileStream.Free;
end;
end;
http://zalil.ru/32271727
__________________
Пишу программы за еду.
__________________
|