我自己写了两个程序一个Server 一个Client。
两个程序之间的通信采用数据报的方法,Server运行在192.168.0.150这台机上。
下面几句是Client中的:
byte buf[]=new byte[1024];
InetAddress ad=InetAddress.getByName("192.168.0.150");//这个IP地址是我们内部的IP,我们对外的IP是202.101.103.54,现在如果在外网要来访问这个Server这个ad要怎么写?在内网访问是可以的。
DatagramPacket out=new DatagramPacket(buf,buf.length,ad,8000);

解决方案 »

  1.   

    Client要连接到Server就需要知道Server的InetAddress 
    我的意思是说外网的Client要怎么样获取Server的InetAddress
      

  2.   

    private String getLocalSiteIP() throws Exception {
    String siteString = "";
        Enumeration netInterfaces = NetworkInterface.getNetworkInterfaces();
        while (netInterfaces.hasMoreElements()) {
          NetworkInterface ni = (NetworkInterface) netInterfaces.nextElement();
          InetAddress ip = (InetAddress) ni.getInetAddresses().nextElement();
          if (ip.isSiteLocalAddress() && !ip.isLoopbackAddress() &&
              ip.getHostAddress().indexOf(":") == -1) {
            System.out.println("Interface " + ni.getName() +
                               " seems to be InternetInterface. I'll take it...");
            siteString = ip.getHostAddress();
          }
        }
        return siteString;
      }