我的想法是通过客户端,给指定ip发送消息,如果ip正确,对方的机器收到这个消息,就返回一个给客户端,如果ip正确对方的服务端没有开启就要给我一个提示
我现在只能做到,这么个例子
1:以面是广播的一个例子:
其中一台电脑A的代码:
procedure TForm1.FormCreate(Sender: TObject);
begin
  IdUDPServer1.Bindings.Add.Port:=7896;//在7896端监听.
  IdUDPServer1.Active:=True;//开始等待
end;procedure TForm1.IdUDPServer1UDPRead(Sender: TObject; AData: TStream;
  ABinding: TIdSocketHandle);
Var s:String;
begin
  if AData.Size<=0 then
    Exit;
  SetLength(s,AData.Size);
  AData.Read(s[1],AData.Size);//读取接收到的广播数据.
  if trim(s)='QUERY' then//如果读取到的是QUERY这个字符串.
    ABinding.SendTo(ABinding.PeerIP,7897,s[1],length(s));//把字符串回发回去,发送的端口7897.
end;另一台电脑B的代码:
procedure TForm1.FormCreate(Sender: TObject);
begin
  IdUDPServer2.Bindings.Add.Port:=7897;//在7897端监听.
  IdUDPServer2.Active:=True;
  IdUDPClient1.Active:=True;
end;procedure TForm1.Button1Click(Sender: TObject);
begin
  IdUDPClient1.Broadcast('QUERY',7896);//发送广播.
end;procedure TForm1.IdUDPServer2UDPRead(Sender: TObject; AData: TStream;
  ABinding: TIdSocketHandle);
Var s:String;
begin
  if AData.Size<=0 then
    Exit;
  SetLength(s,AData.Size);
  AData.Read(s[1],AData.Size);
//  if s='QUERY' then
  ShowMessage(ABinding.PeerIP+' is Existsed!'+s);//电脑A在线.
end;