求解UDP通信问题。Indy10中的TidUDPClient 与TidUDPServer 通信出错
在DELPHI EX2中,分别在两个应用中用了控件TidUDPClient 与TidUDPServer来实现信息的收发。实现在的功能是TidClient发信息后就收。客户端代码如下:
procedure TForm1.Button1Click(Sender: TObject);
var
GetBuff:TBytes;
lsstr:string;
begin
setlength(GetBuff,512);
zeromemory(GetBuff,512);
IdUDPClient1.Send('127.0.2.1',3030,'ewqefqwe312313');
IdUDPClient1.ReceiveBuffer(GetBuff);
end;
服务端代码如下:
procedure TForm1.IdUDPServer1UDPRead(AThread: TIdUDPListenerThread;
AData: TArray<System.Byte>; ABinding: TIdSocketHandle);
var
revbuff:array[0..99] of AnsiChar;
lsMsg:AnsiString;
begin
lsMsg:= BytesToString(AData);
Memo1.Lines.Add(lsMsg);
IdUDPServer1.Send(ABinding.PeerIP,ABinding.PeerPort,lsMsg);
end;
如果服务端下客户端都开启。通信正常。但如果服务端关闭,客户端就会报错:socket Error #10054 请问高手们,怎样不让客户端出错。也就是说,因为出错了,那TidUDPClient就一定知道服务端没有正常接收信息,在发送之前,怎样判断服务端没有开启或网络不通,从而决定发与不发信息。