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);
}