我自己写了两个程序一个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);
两个程序之间的通信采用数据报的方法,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);
我的意思是说外网的Client要怎么样获取Server的InetAddress
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;
}