java 获得 子网掩码 默认网关

zwyancc 2011-11-29 08:37:07
如题 我在网上 找了 一天了 那些代码 copy到程序中 就是报错

再就是获得了 能得ip得不到 子网掩码

我 用doc 那种写了一个 但是 要是win 7 和window 系统还是有区别的所以 我看就不用 ipconfig那个方法 了吧

谁会那个InterfaceAddress 那个帮写一个吧

实在是疯了 就是获得不到
...全文
580 12 打赏 收藏 转发到动态 举报
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
zwyancc 2011-11-30
  • 打赏
  • 举报
回复
5 楼写那个 东西是什么 呀 放到项目中就报错 无语了

如果5楼 有代码 的话 看看白
zwyancc 2011-11-30
  • 打赏
  • 举报
回复
这是百度上的文章 我也不知这个类有啥 方法

获得子网 掩码的方法是啥呀 java中 妹的愁死我了
zwyancc 2011-11-30
  • 打赏
  • 举报
回复
package help;

import java.net.Inet4Address;
import java.net.InetAddress;
import java.net.InterfaceAddress;
import java.net.NetworkInterface;
import java.net.SocketException;
import java.net.UnknownHostException;

public class test5 {
public static void main(String args[]){

InetAddress localHost;
try {
localHost = Inet4Address.getLocalHost();
NetworkInterface networkInterface;
try {
networkInterface = NetworkInterface.getByInetAddress(localHost);
for (InterfaceAddress address : networkInterface.getInterfaceAddresses()) {
System.out.println(address.getNetworkPrefixLength());
}
} catch (SocketException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}

} catch (UnknownHostException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}


}
LucEaspe 2011-11-30
  • 打赏
  • 举报
回复

//这个是获取IP的,子网掩码与网关类似。
import java.net.InetAddress;
import java.net.UnknownHostException;

public class getIP
{
  public static void main(String[] args)
  {
    InetAddress myIP = null;
    try{
      myIP = InetAddress.getLocalHost();
    }
    catch( UnknownHostException e){
      System.out.println(e);
    }
  System.out.println(myIP);
  }
}

半个鼠标 2011-11-30
  • 打赏
  • 举报
回复
顶下http://blog.csdn.net/oyxm0/article/details/6992978
帮你找到这个看用没有用
zwyancc 2011-11-30
  • 打赏
  • 举报
回复
大侠 们 帮帮 忙 呀做过的 给个代码把
鱼姐989 2011-11-30
  • 打赏
  • 举报
回复
在我这 还是 225 225 225 225
qybao 2011-11-30
  • 打赏
  • 举报
回复
[Quote=引用 9 楼 qybao 的回复:]
for example

Java code

import java.util.*;
import java.net.*;
public class Test {
public static void main(String[] args) throws Throwable {
//这里作为测试直接取IP地址,LZ可以根据需要自己调整调用相应的方法
……
[/Quote]
有点失误,修改一下
不过还是调用系统命令ipconfig比较靠谱,根据不同的系统在命令执行结果中判断一下就好了
import java.util.*;
import java.net.*;
public class Test {
public static void main(String[] args) throws Throwable {
InetAddress ip = InetAddress.getByAddress(new byte[]{127,0,0,1});
NetworkInterface ni = NetworkInterface.getByInetAddress(ip);
List<InterfaceAddress> list = ni.getInterfaceAddresses();
if (list.size() > 0) {
int mask = list.get(0).getNetworkPrefixLength();
mask = (-1 >> (31-(mask-1))) << (31-(mask-1));
StringBuilder maskStr = new StringBuilder();
byte[] maskIp = new byte[4];
for (int i=0; i<maskIp.length; i++) {
maskIp[i] = (byte)(mask>>(maskIp.length-1-i)*8);
maskStr.append((maskIp[i] & 0xff));
if (i < maskIp.length-1) {maskStr.append(".");}
}
System.out.println(maskStr);
}
}
}
dracularking 2011-11-30
  • 打赏
  • 举报
回复
得到ip之后又不是一定能推出唯一一个子网掩码的

子网掩码不独立存在,子网掩码最左二进制位必须是1,最右必须是0,

比如:

11111111 11111111 11111111 00000000

就是:

255.255.255.0

qybao 2011-11-30
  • 打赏
  • 举报
回复
for example
import java.util.*;
import java.net.*;
public class Test {
public static void main(String[] args) throws Throwable {
//这里作为测试直接取IP地址,LZ可以根据需要自己调整调用相应的方法
InetAddress ip = InetAddress.getByAddress(new byte[]{127, 0, 0, 1});
NetworkInterface ni = NetworkInterface.getByInetAddress(ip);
List<InterfaceAddress> list = ni.getInterfaceAddresses();
if (list.size() > 0) {
int mask = list.get(0).getNetworkPrefixLength(); //子网掩码的二进制1的个数
StringBuilder maskStr = new StringBuilder();
int[] maskIp = new int[4];
for (int i=0; i<maskIp.length; i++) {
maskIp[i] = (mask >= 8) ? 255 : (mask > 0 ? (mask & 0xff) : 0);
mask -= 8;
maskStr.append(maskIp[i]);
if (i < maskIp.length-1) {maskStr.append(".");}
}
System.out.println(maskStr);
}
}
}
jiazhuo 2011-11-29
  • 打赏
  • 举报
回复
再找找

67,541

社区成员

发帖
与我相关
我的任务
社区描述
J2EE只是Java企业应用。我们需要一个跨J2SE/WEB/EJB的微容器,保护我们的业务核心组件(中间件),以延续它的生命力,而不是依赖J2SE/J2EE版本。
社区管理员
  • Java EE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧