碰到个案例,一个域名比如 
xxx.com 
xxx.com:8080 
两个指向不同的IP 
用java怎么获取呢? 我测试了两种方法都不行 1.InetAddress.getAllByName("xxx.com") 
想获取所有的ip,结果没有我想要的那个 
2.InetSocketAddress Iaddr=new InetSocketAddress("xxx.com",8080); 
System.out.println(Iaddr.getAddress()); 
结果这个ip跟xxx.com是一样的ip 怎么获取到正确的ip呢?

解决方案 »

  1.   

    首先概念不对,域名是绑定在IP上面的。和端口无关。
    也就是说,域名解析,只能将域名转换成IP地址。
    楼主所说的,应该是当你访问到某个域名下的主机时。
    若访问的是主机的某个端口的程序(如:8080),这时,程序会转向到其他主机上面。
    通过域名解析这条路,是行不通的。
    楼主可以具体分析一下,那个8080端口的程序,是个什么样的跳转。
    如果是Http的页面跳转,楼主可以写一个简单的Http客户端程序,将其对应转向的域名,或者IP捕获下来。
    如果要是IP代理之类的,就没有什么办法了。
      

  2.   

    1 不可能指向2个IP
    2 除非使用了动态DNS, 比如 sina 等大型网站,基于负载均衡的考虑
      

  3.   

    转IP是可能的
    不过一般来说应该不会这么做比如LINUX下,就可以通过IPTABLES来转发
      

  4.   


    就算是DNS负载均衡,它也和端口无关.
      

  5.   

    再顶...
    java资料太多?在网页中选中想收藏的文字(图片),右键选“收录到易载”,搞定!
      

  6.   

    对于xxx.com ,可直接调用其名称来得到IP地址:InetAddress addr=InetAddress.getByName(null)对于xxx.com:8080 ,可生成一个socket并把它连接到指定远程端口的指定远程地址
    Socket(InetAddress address,int port,InetAddress localAddr,int localPort) throws IOException
    已经知道本机IP地址、本机端口和远程端口,就能知道远程的IP地址。