我用花生壳申请动态解析了个域名 
路由设置如下http://image155.poco.cn/mypoco/myphoto/20090827/12/534922962009082712300003_640.jpg
我电脑的mac 和 ip
开启映射的端口
我测试的程序{Client}
unit Unit1;interfaceuses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, IdBaseComponent, IdComponent, IdTCPConnection, IdTCPClient, StdCtrls,
  WinSock;type
  TForm1 = class(TForm)
    IdTCPClient1: TIdTCPClient;
    Edit1: TEdit;
    Button1: TButton;
    procedure FormCreate(Sender: TObject);
    procedure Button1Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
    function GetIp(DNS: string): string;
  end;var
  Form1: TForm1;implementation{$R *.dfm}procedure TForm1.Button1Click(Sender: TObject);//连接server
begin
  while IdTCPClient1.Connected = False do
  begin
    IdTCPClient1.Connect();
  end;
  if IdTCPClient1.Connected = true then
    showmessage('connected');
end;procedure TForm1.FormCreate(Sender: TObject);
begin
  IdTCPClient1.Host := GetIp('cole-pfieffer.gicp.net'); //'192.168.1.105';//'127.0.0.1';连接localhost可行
  IdTCPClient1.Port := 5050;
  Edit1.Text := IdTCPClient1.Host;
end;function TForm1.GetIp(DNS: string): string;//解析域名获得ip
var
  So:TWsadata;
begin
  WSAStartup($202, So);
  Result:=iNet_ntoa(PInAddr(GetHostByName(PAnsichar(DNS))^.h_addr_list^)^);
end;
end.
{Server}
unit Unit1;interfaceuses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, IdContext, StdCtrls, IdBaseComponent, IdComponent, IdCustomTCPServer,
  IdTCPServer;type
  TForm1 = class(TForm)
    IdTCPServer1: TIdTCPServer;
    Button1: TButton;
    procedure FormCreate(Sender: TObject);
    procedure Button1Click(Sender: TObject);
    procedure IdTCPServer1Execute(AContext: TIdContext);
  private
    { Private declarations }
  public
    { Public declarations }
  end;var
  Form1: TForm1;implementation{$R *.dfm}procedure TForm1.Button1Click(Sender: TObject);//启动server
begin
  while IdTCPServer1.Active = False do
  begin
    IdTCPServer1.Active :=True;
  end;
  Form1.Caption := 'Server Actived'
end;procedure TForm1.FormCreate(Sender: TObject);
begin
  IdTCPServer1.DefaultPort := 5050;
end;procedure TForm1.IdTCPServer1Execute(AContext: TIdContext);
begin
  form1.Caption:='server';
end;end.域名是我自己的电脑 我用adsl+tplink路由器
host换成127.0.0.1或192.168.1.105可以连接,解析域名的连不上服务器,我判断是端口映射没有设置好 但找不到原因 防火墙是关了的 xp系统
小弟菜鸟 望大虾不吝赐教

解决方案 »

  1.   

    IP地址不对,或者没有办法访问
    你用PING能PING到你输入的IP吗?
      

  2.   

    先从IE里试一下用外网IP访问能否成功
    不成功说明端口映射有问题
    否则再找其他的问题
      

  3.   

    试过了 http服务也无法访问 弄了三天了 还没弄好 
    郁闷
      

  4.   

    测试用 telnet 连接对方端口是否能连通,然后再定位问题所在
      

  5.   

    telnet 80端口可以连上但是测试网页不可打开
    telnet 5050端口连不上 
      

  6.   

    估计是你的路由器不支持端口回流, 造成内网的客户端无法连接到该路由器中映射到内网的服务器的外网端口。把你的Client程序放在其他网络中(不要连接在你现在使用的这个路由器上)测试一下。
      

  7.   

    telnet 域名 + 5050 看是否能PING通
    如果不通的话,就是路由的问题了 
      

  8.   

    ping域名可以ping通  telnet域名+5050不通 我是xp系统 防火墙关闭了 端口也没有被其他程序占用的
      

  9.   

    俺去下个 TP-LINK TL-R402详细配置指南看看
    我认为就是端口映射没做好 但就是找不到原因
      

  10.   

    telnet 80 端口却可以
    好奇怪啊