有关NMUDP的DataReceived事件(200分)

  • 主题发起人 主题发起人 netmonit
  • 开始时间 开始时间
N

netmonit

Unregistered / Unconfirmed
GUEST, unregistred user!
我使用Delphi 4.0中的NMUDP控件进行UDP通信,但是我发现有时接收数据时有
错误,通过跟踪,我发现DataReceived事件的第二个参数NumberBytes为-1,不知哪位高手能告诉我在什么情况下这个参数会为-1,如何解决。多谢!
 
Numberbytes=-1说明没有收到数据.


procedure TForm1.NMUDP1DataReceived(Sender: TComponent;
NumberBytes: Integer; FromIP: String);
var
MyStream: TMemoryStream;
TmpStr: String;
begin
MyStream := TMemoryStream.Create;
try
NMUDP1.ReadStream(MyStream);
SetLength(TmpStr,NumberBytes);
MyStream.Read(TmpStr[1],NumberBytes);
Memo1.Lines.Add(FromIP+': '+TmpStr);
finally
MyStream.Free;
end;
end;

 
通过试验,我发现NMUDP控件确实存在问题,它接收和发送数据的长度都不能超过2K
字节,否则就会错,并且如果不停地发送数据包,可能会发生丢包的现象,总之是非
常地不可靠,建议大家直接使用WinSock,但最大可以接收和发送65400字节的数据。
 
接受答案了.
 
后退
顶部