//客户端
var
leftsize:integer;
sendsize:integer;
streamsize:integer;
bufsize:integer;
sendstream:tmemorystream;
stream:tmemorystream;
procedure TForm1.Button2Click(Sender: TObject);
begin
form1.screencap(0,0,100,100);//截屏,数据存在stream里
streamsize:=stream.Size;
leftsize:=streamsize;
bufsize:=form1.IdUDPClient1.BufferSize;//form1.IdUDPClient1.BufferSize=2048
form1.IdUDPClient1.Active:=true;
sendstream:=tmemorystream.Create;
while leftsize>0 do
begin
if(leftsize>bufsize) then
begin
leftsize:=leftsize-bufsize;
sendsize:=bufsize;
end
else
begin
sendsize:=leftsize;
leftsize:=0;
end;
sendstream.CopyFrom(stream,sendsize);
form1.Memo1.Lines.Add(inttostr(sendsize)+' '+inttostr(stream.Position) );//记录发送的数据,结果显示全部发出去了
sendstream.Position:=0;
form1.IdUDPClient1.SendBuffer('127.0.0.1',2000,sendstream.Memory^,sendsize);
end;
sendstream.Clear;
stream.Clear;
end;//服务端
var
tmpstream:TStringStream;
procedure TForm1.Button3Click(Sender: TObject);
begin
form1.IdUDPServer1.DefaultPort:=2000;
tmpstream:=TStringStream.Create('');
form1.IdUDPServer1.Active:=true;
end;procedure TForm1.IdUDPServer1UDPRead(Sender: TObject; AData: TStream;
ABinding: TIdSocketHandle);
begin try
tmpstream.CopyFrom(adata,adata.Size);
if adata.Size<form1.IdUDPServer1.BufferSize then
begin
tmpstream.Position:=0;
form1.Image1.Picture.Bitmap.LoadFromStream(tmpstream);
end;
except
showmessage('except');
end; form1.Memo2.Lines.Add(inttostr(adata.Size));//记录接收到的数据包,结果显示只接收到部份数据包
end;
var
leftsize:integer;
sendsize:integer;
streamsize:integer;
bufsize:integer;
sendstream:tmemorystream;
stream:tmemorystream;
procedure TForm1.Button2Click(Sender: TObject);
begin
form1.screencap(0,0,100,100);//截屏,数据存在stream里
streamsize:=stream.Size;
leftsize:=streamsize;
bufsize:=form1.IdUDPClient1.BufferSize;//form1.IdUDPClient1.BufferSize=2048
form1.IdUDPClient1.Active:=true;
sendstream:=tmemorystream.Create;
while leftsize>0 do
begin
if(leftsize>bufsize) then
begin
leftsize:=leftsize-bufsize;
sendsize:=bufsize;
end
else
begin
sendsize:=leftsize;
leftsize:=0;
end;
sendstream.CopyFrom(stream,sendsize);
form1.Memo1.Lines.Add(inttostr(sendsize)+' '+inttostr(stream.Position) );//记录发送的数据,结果显示全部发出去了
sendstream.Position:=0;
form1.IdUDPClient1.SendBuffer('127.0.0.1',2000,sendstream.Memory^,sendsize);
end;
sendstream.Clear;
stream.Clear;
end;//服务端
var
tmpstream:TStringStream;
procedure TForm1.Button3Click(Sender: TObject);
begin
form1.IdUDPServer1.DefaultPort:=2000;
tmpstream:=TStringStream.Create('');
form1.IdUDPServer1.Active:=true;
end;procedure TForm1.IdUDPServer1UDPRead(Sender: TObject; AData: TStream;
ABinding: TIdSocketHandle);
begin try
tmpstream.CopyFrom(adata,adata.Size);
if adata.Size<form1.IdUDPServer1.BufferSize then
begin
tmpstream.Position:=0;
form1.Image1.Picture.Bitmap.LoadFromStream(tmpstream);
end;
except
showmessage('except');
end; form1.Memo2.Lines.Add(inttostr(adata.Size));//记录接收到的数据包,结果显示只接收到部份数据包
end;
var
leftsize:integer;
sendsize:integer;
streamsize:integer;
bufsize:integer;
sendstream:tmemorystream;
stream:tmemorystream;
procedure TForm1.Button2Click(Sender: TObject);
begin
form1.screencap(0,0,100,100);//截屏,数据存在stream里
streamsize:=stream.Size;
leftsize:=streamsize;
bufsize:=form1.IdUDPClient1.BufferSize;//form1.IdUDPClient1.BufferSize=2048
form1.IdUDPClient1.Active:=true;
sendstream:=tmemorystream.Create;
form1.Timer1.Enabled:=true;
end;procedure TForm1.Timer1Timer(Sender: TObject);
begin
if(leftsize>bufsize) then
begin
leftsize:=leftsize-bufsize;
sendsize:=bufsize;
end
else
begin
sendsize:=leftsize;
leftsize:=0;
end;
sendstream.CopyFrom(stream,sendsize);
form1.Memo1.Lines.Add(inttostr(stream.Position) );
sendstream.Position:=0;
form1.IdUDPClient1.SendBuffer('127.0.0.1',2000,sendstream.Memory^,sendsize);
if(leftsize=0) then
begin
form1.Timer1.Enabled:=false;
stream.Clear;
end;
end;