delphi Indy10 udp如何向外网发数据

delphi Indy10 udp怎么向外网发数据
网上找了很多,真心不知道该怎么弄,比如说我想在局域网内的机器发一个‘hello’给外网的服务器,
发送端跟接收端怎么弄;麻烦给个例子
------解决方案--------------------
server.dpr

program server;

{$APPTYPE CONSOLE}

uses
  SysUtils, IdSocketHandle, IdBaseComponent, IdComponent, IdUDPBase, IdUDPServer, IdGlobal;

type
  TServer = class
  private
    FUdpServer: TIdUDPServer;
    procedure OnRead(AThread: TIdUDPListenerThread; AData: TIdBytes; ABinding: TIdSocketHandle);
  public
    constructor Create(const port: Word);
    destructor Destroy; override;
  end;


{ TServer }

constructor TServer.Create(const port: Word);
begin
  FUdpServer := TIdUDPServer.Create;
  with FUdpServer do
  begin
    ThreadedEvent := True;
    DefaultPort := port;
    OnUDPRead := OnRead;
    Active := True;
  end;
end;

destructor TServer.Destroy;
begin
  FUdpServer.Free;
end;

procedure TServer.OnRead(AThread: TIdUDPListenerThread; AData: TIdBytes; ABinding: TIdSocketHandle);
var
  content: string;
begin
  SetLength(content, Length(AData));
  Move(AData[0], content[1], Length(AData));
  Writeln(Format('[%s] %s', [ABinding.PeerIP, content]));
end;

var
  ser: TServer;

begin
  ser := TServer.Create(9999);
  try
    Readln;
  finally
    ser.Free;
  end;
end.



client.dpr
program client;

{$APPTYPE CONSOLE}

uses
  IdBaseComponent, IdComponent, IdUDPBase, IdUDPClient;

var
cli: TIdUDPClient;
  
begin
  cli := TIdUDPClient.Create;
  try
//默认测试为127.0.0.1:9999,自己修改外网IP及端口,记得端口(UDP)要开放
    cli.Send('127.0.0.1', 9999, 'hello indy!');
  finally
    cli.Free;
  end;
end.