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

Thinbug 程序员  2008-04-08 10:22:37
我的小程序用的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;
...全文
108 点赞 收藏 5
写回复
5 条回复
切换为时间正序
当前发帖距今超过3年,不再开放新的回复
发表回复
Thinbug 2008-04-09
找到问题了,散粉。
回复
brightyang 2008-04-08
ip问题!~~

你确定你的IP是写的公网IP和端口?
回复
喝口水 2008-04-08
如何真是外网IP的话,是没问题的
回复
brightyang 2008-04-08
发的时候有没有服务器监控?

开一个抓包的looklook
回复
Thinbug 2008-04-08
我收都没问题,发能有问题吗?想不通
回复
相关推荐
发帖
网络通信/分布式开发
创建于2007-08-02

1572

社区成员

Delphi 网络通信/分布式开发
申请成为版主
帖子事件
创建了帖子
2008-04-08 10:22
社区公告
暂无公告