紧急求助,UDP通讯的一个问题,有例子,请大家帮忙看一下! ( 积分: 200 )

  • 主题发起人 主题发起人 t365
  • 开始时间 开始时间
T

t365

Unregistered / Unconfirmed
GUEST, unregistred user!
这个接收端的代码:
procedure TForm1.UDPReadEvent(Sender: TObject; AData: TStream;
ABinding: TIdSocketHandle);
var
Buf:array[0..200] of Char;
begin
AData.Read(Buf,AData.Size);
Memo1.Lines.Add(Trim(Buf));
end;

procedure TForm1.FormCreate(Sender: TObject);
begin
IdUDPServer1.OnUDPRead := UDPReadEvent;
end;

发送端的代码:
procedure TForm1.Button1Click(Sender: TObject);
var
Buf:array[0..200] of Char;
I:Integer;
S:string;
begin
for I:=1 to 100 do
begin
S := 'Test'+IntToStr(I);
StrFmt(Buf,'%-200s',);
IdUDPClient1.SendBuffer(Buf,SizeOf(Buf));
end;
end;

发送了100个包 但接收端一直接收不全,丢很多,为什么 呢,请高手帮忙啊,
只改接收端的实现,能不能解决这个问题呢,因为实际中发送端是别人做的,己
经是做好了的程序,没法改。
 
udp 丢包是很正常的。
 
本来就不是可信任的连接
用TCP吧
 
别人的程序就是用UDP发数据的啊
 
收不到,发送方就要重发,做不到,就是发送方的问题。
 
for I:=1 to 100 do
begin
S := 'Test'+IntToStr(I);
StrFmt(Buf,'%-200s',);
IdUDPClient1.SendBuffer(Buf,SizeOf(Buf));
//加上一段延时
Sleep(50);
end;
 
后退
顶部