java子网掩码
1. 怎样用java获取本机DNS跟子网掩码
可以看下java8的InetAddress类,拿本机DNS也就是hostname
Stringlocalhostname=java.net.InetAddress.getLocalHost().getHostName();
至于subnet mask子网掩码
InetAddresslocalHost=Inet4Address.getLocalHost();
=NetworkInterface.getByInetAddress(localHost);
for(InterfaceAddressaddress:networkInterface.getInterfaceAddresses()){
System.out.println(address.getNetworkPrefixLength());
}
2. java获取本机dns
如何查看本机的DNS服务器?ipconfig其实是可以的。除此以外,还可以利用一个命令:在(开始-运行)cmd下输入netsh进入到netsh>提示符再输入:int ip 进入到netsh interface ip> 再输入mp这时候屏幕上出现当前连接的配置情况了这里必须介绍一下netsh到底是作什么用的!这个命令比较复杂,他包含了很多的子命令,所以这里只对部分命令进行讲解:1)查看本机IP:首先键入netsh,再netsh>提示符下输入:interface 回车 之后:ip 回车 再之后:show address 回车 这样,就可以看到当前连接的IP地址和子网掩码。(其实这个命令不如ipconfig简单,也不如ipconfig/all全面)2)修改网络配置:接着上面的命令,我们使用:set address name=“本地连接” source=static addr=192.168.0.200 mask=255.255.255.0,这样就修改了当前的IP地址,用show address来看看(或者用ipconfig)3)显示一个完整的网络配置教本:刚才说过,第一个命令显示的信息不如ipconfig/all全面,不用着急,netsh再打印显示网络配置上,还是有自己的特色的!例如:再interface ip>状态下输入:mp,会显示一个清单,显示所有本地连接(不管你是否使用~)与netstat -an不完全一样![]
3. 根据ip地址和子网掩码计算网段地址和广播地址,要是java代码哦
根据IPV4的规则
IP是32位的整数,掩码是网络的补码。A类地方是高8位是网络地址、B类是高16位、类推。
广播则是对应IP地址的主机地址全是255。
4. java如何获取子网掩码
要用到JDK6中的InterfaceAddress#getNetworkPrefixLength方法。
InetAddress localHost = Inet4Address.getLocalHost();
NetworkInterface networkInterface = NetworkInterface.getByInetAddress(localHost);
for (InterfaceAddress address : networkInterface.getInterfaceAddresses()) {
System.out.println(address.getNetworkPrefixLength());
}
典型的IPv4値:
8 (255.0.0.0)、16 (255.255.0.0)、 24 (255.255.255.0)
典型的IPv6 値:
128 (::1/128)
10 (fe80::203:baff:fe27:1243/10)
5. java如何编程实现,获取固定IP发来所有的数据包
java获取固定IP发来所有的数据包,需要实现网络嗅探的部分功能:
代码如下;
/*******************
*JpcapTip.java
*/
packagem;
importjpcap.PacketReceiver;
importjpcap.JpcapCaptor;
importjpcap.packet.*;
importjpcap.NetworkInterface;
importjpcap.NetworkInterfaceAddress;
//importjava.net.InetAddress;
//importjava.net.UnknownHostException;
{
publicvoidreceivePacket(Packetpacket){
System.out.println("********************************************");
/*IP数据报报文头*/
byte[]l=packet.header;
/*
for(intt=0;t<21;t++){
System.out.print(l[t]+"***");
}
*/
Stringstr="";
System.out.print("报文头:");
for(inti=0;i<l.length;i++){
//str=str+l;
intm=0;
m=l[i];
m=m<<24;
m=m>>>24;
str=str+Integer.toHexString(m);
//System.out.print("***"+l[i]);
}
System.out.println(str);
intd=l.length;
System.out.println("首部长度:"+(d*8)+"bit");
/*分析源IP地址和目的IP地址*/
/*分析协议类型*/
/**
if(packet.getClass().equals(IPPacket.class)){
IPPacketipPacket=(IPPacket)packet;
byte[]iph=ipPacket.option;
Stringiphstr=newString(iph);
System.out.println(iphstr);
}
*/
if(packet.getClass().equals(ARPPacket.class))
{
System.out.println("协议类型:ARP协议");
try{
ARPPacketarpPacket=(ARPPacket)packet;
System.out.println("源网卡MAC地址为:"+arpPacket.getSenderHardwareAddress());
System.out.println("源IP地址为:"+arpPacket.getSenderProtocolAddress());
System.out.println("目的网卡MAC地址为:"+arpPacket.getTargetHardwareAddress());
System.out.println("目的IP地址为:"+arpPacket.getTargetProtocolAddress());
}catch(Exceptione){
e.printStackTrace();
}
}
else
if(packet.getClass().equals(UDPPacket.class))
{
System.out.println("协议类型:UDP协议");
try{
UDPPacketudpPacket=(UDPPacket)packet;
System.out.println("源IP地址为:"+udpPacket.src_ip);
inttport=udpPacket.src_port;
System.out.println("源端口为:"+tport);
System.out.println("目的IP地址为:"+udpPacket.dst_ip);
intlport=udpPacket.dst_port;
System.out.println("目的端口为:"+lport);
}catch(Exceptione){
e.printStackTrace();
}
}
else
if(packet.getClass().equals(TCPPacket.class)){
System.out.println("协议类型:TCP协议");
try{
TCPPackettcpPacket=(TCPPacket)packet;
inttport=tcpPacket.src_port;
System.out.println("源IP地址为:"+tcpPacket.src_ip);
System.out.println("源端口为:"+tport);
System.out.println("目的IP地址为:"+tcpPacket.dst_ip);
intlport=tcpPacket.dst_port;
System.out.println("目的端口为:"+lport);
}catch(Exceptione){
e.printStackTrace();
}
}
else
if(packet.getClass().equals(ICMPPacket.class))
System.out.println("协议类型:ICMP协议");
else
System.out.println("协议类型:GGP、EGP、JGP协议或OSPF协议或ISO的第4类运输协议TP4");
/*IP数据报文数据*/
byte[]k=packet.data;
Stringstr1="";
System.out.print("数据:");
for(inti=0;i<k.length;i++){
//intm=0;
//m=k[i];
//m=m<<24;
//m=m>>>24;
//str1=str+Integer.toHexString(m);
str1=newString(k);
//str1=str1+k[i];
//System.out.print("***"+k[i]);
}
System.out.println(str1);
System.out.println("数据报类型:"+packet.getClass());
System.out.println("********************************************");
}
publicstaticvoidmain(String[]args)throwsException{
//TODO自动生成方法存根
NetworkInterface[]devices=JpcapCaptor.getDeviceList();//.getDeviceList();.
//for(inti=0;i<devices.length;i++){
inta=0;
//try{
/*本地网络信息*/
byte[]b=devices[1].mac_address;//网卡物理地址
//}
//catch(){}
System.out.print("网卡MAC:00");
for(intj=0;j<b.length;j++){
//a=a<<8;
a=b[j];
a=a<<24;
a=a>>>24;
System.out.print(Integer.toHexString(a));
}
System.out.println();
NetworkInterfaceAddress[]k=devices[1].addresses;
//System.out.println("网卡MAC:"+Integer.toHexString(a));
for(intn=0;n<k.length;n++){
System.out.println("本机IP地址:"+k[n].address);//本机IP地址
System.out.println("子网掩码:"+k[n].subnet);//子网掩码
}
System.out.println("网络连接类型:"+devices[1].datalink_description);
//}
NetworkInterfacedeviceName=devices[1];
/*将网卡设为混杂模式下用网络设备deviceName*/
JpcapCaptorjpcap=JpcapCaptor.openDevice(deviceName,2000,false,1);//openDevice(deviceName,1028,false,1);
jpcap.loopPacket(-1,newJpcapTip());
}
}
6. IP地址段 子网掩码中 IP地址 java
如果知道掩码数,比如说是27位
32-27=5,5就是该ip所在网段的主机位,2的5次方,32就是该网段的主机数,
但是要减去2(1个网络号,1个广播地址)就是ip地址段中可用的ip地址数了。
7. 怎样用Java验证ip和子网掩码是否正确,详细问题如下
把ip和子网掩码转换成二进制 做“按位与”运算 得出的就是网络id号a 另一个ip也是一样计算方法 得出网络id号b
比较a=b 就说明在一个子网 反之 不在
ip转换成二进制的时候 注意按段转
8. win7下java获取本机子网掩码
/**
* @param args
*/
public static String getSubnetMask(){
int prefix=0;
int[] ipSplit=new int[4];
String subnetMask=null;
InetAddress localMachine=null;
try {
localMachine=InetAddress.getLocalHost();
} catch (UnknownHostException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
NetworkInterface netCard=null;
try {
netCard=NetworkInterface.getByInetAddress(localMachine);
} catch (SocketException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
List<InterfaceAddress> localInterface=null;
localInterface=netCard.getInterfaceAddresses();
Iterator<InterfaceAddress> iterator=null;
iterator=localInterface.iterator();
while(iterator.hasNext()){
InterfaceAddress temp=null;
temp=iterator.next();
prefix=temp.getNetworkPrefixLength();
}
int index=0;
int split=0;
int remainder=0;
split=prefix/8;
remainder=prefix%8;
while(index<split){
ipSplit[index]=255;
index++;
}
if(remainder==1)
ipSplit[index]=128;
if(remainder==2)
ipSplit[index]=192;
if(remainder==3)
ipSplit[index]=224;
if(remainder==4)
ipSplit[index]=240;
if(remainder==5)
ipSplit[index]=248;
if(remainder==6)
ipSplit[index]=252;
if(remainder==7)
ipSplit[index]=254;
index++;
while(index<remainder){
ipSplit[index]=0;
index++;
}
subnetMask=String.valueOf(ipSplit[0])+"."+String.valueOf(ipSplit[1])+"."+String.valueOf(ipSplit[2])+"."+String.valueOf(ipSplit[3]);
return subnetMask;
}
public static void main(String[] args) {
// TODO Auto-generated method stub
String subnetMask=getSubnetMask();
System.out.println(subnetMask);
}