IdUDPClient和idUDPServer在局域网可以使用,但是外网ip没办法
我的小程序用的IdUDPClient和idUDPServer在局域网可以使用,但是外网ip没办法接收发送数据
这个是为什么 ?
网络没问题,在网上找个其他软件测试网络没问题。但是我的程序就有问题。请指点
procedure TForm_main.Button_sendClick(Sender: TObject);
var
str : string ;
begin
try
IdUDPClient1.Port:=strtoint(Edit_port2.Text);;
IdUDPClient1.Host:=Edit_ip2.Text;
IdUdpClient1.Active:=true;
IdUdpClient1.ReceiveTimeout:=5000;
str := Memo2.Text ;
IdUdpClient1.Send(str);
except
Memo2.Lines.Add('发送出错!');
end;
end;
procedure TForm_main.IdUDPServer1UDPRead(Sender: TObject; AData: TStream;
ABinding: TIdSocketHandle);
var
DataStringStream: TStringStream;
s,cIP,cPort: String;
begin
try
DataStringStream := TStringStream.Create( ' ');
DataStringStream.CopyFrom(AData, AData.Size);
s := DataStringStream.DataString;
cIP := ABinding.PeerIP ;
cPort := inttostr(ABinding.PeerPort);
Memo1.Lines.Add(cIP+':'+cPort+' '+s);
ListBox_ip.Items.Clear;
ListBox_ip.Items.Add(cIP+':'+cPort) ;
except
Memo1.Lines.Add('接收出错!');
end;
end;
procedure TForm_main.Button_getClick(Sender: TObject);
begin
if Button_get.Caption = '关闭' then
begin
idUDPServer1.DefaultPort := strtoint(Edit_port1.Text);
Button_get.Caption := '打开' ;
idUDPServer1.Active := True ;
end
else
begin
Button_get.Caption := '关闭';
idUDPServer1.Active := false ;
end ;
end;
procedure TForm_main.ListBox_ipClick(Sender: TObject);
var
s : string ;
i,len : integer;
begin
s := Listbox_ip.Items.Strings[0] ;
len := length(s);
i := pos(':',s);
if i <> 0 then
begin
Edit_ip2.Text := MidStr(s,0,i-1);
Edit_port2.Text := MidStr(s,i+1,len);
end;
end;