UDP广播问题?接收端,好象只接收到一次
能不能帮我看看哪里出问题了呢?
源码如下:
发送端sender.pas
……
var
SendSize:integer;
Buf:array[0..BufSize-1] of char;
i,j,iHead:Integer;
LocalIP,sHead,s:String;
ai:array [1..3] of integer;
ReqCode:array[0..29] of char;ReqCodeStr:string;
begin
Application.Minimize;
BmpStream:=TMemoryStream.Create;
BroadCastIP='127.255.255.255'
CUDP.RemoteHost:=BroadCastIP; { BroadCastIP为广播地址 }
if BmpStream.Size=0 then { 没有数据可发,必须截屏生成数据 }
ScreenCap(0,0,300,300); {截取屏幕 }
while LeftSize>BufSize do
begin
k:=k+1;
SendSize:=BufSize;
BmpStream.ReadBuffer(Buf,SendSize);
LeftSize:=LeftSize-SendSize;
if LeftSize=0 then
begin
BmpStream.Clear;{如果剩余数据为空,清空流 }
exit;
end;
CUDP.SendBuffer(Buf,SendSize); { 将数据发到主控机的2222口 }
end;
SendSize:=LeftSize;
BmpStream.ReadBuffer(Buf,SendSize);
LeftSize:=LeftSize-SendSize;
CUDP.SendBuffer(Buf,SendSize); { 将数据发到主控机的2222口 }
……
接收端:receiver.pas
……
procedure TForm1.SUDPDataReceived(Sender: TComponent;
NumberBytes: Integer; FromIP: String; Port: Integer);
begin
SUDP.ReadStream(TmpStream);
RsltStream.CopyFrom(TmpStream,NumberBytes);
if NumberBytes< BufSize then { 数据已读完 }
begin
RsltStream.Position:=0;
Image1.Picture.Bitmap.LoadFromStream(RsltStream);
label1.caption:='received';
TmpStream.Clear;
RsltStream.Clear;
end;
end;