IdUDPClient和idUDPServer在局域网可以使用,但是外网ip没办法

Thinbug Thinbug 墨衍会员 · AI 创作全网分发 墨衍智能分发 通过墨衍一键同步至各平台 可同步平台 CSDN微信公众号微博知乎掘金百家号博客园抖音小红书 你的文章也可以这样分发 墨衍会员 ¥399起/年,写一次发全网 我也要 + 加入社区
我的小程序用的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;
...全文

相关推荐

评论 5
收藏 已收藏
分享
返回顶部