首页编程java编程java查询ip要导入什么包,java如何编程实现,获取固定IP发来所有的数据包

java查询ip要导入什么包,java如何编程实现,获取固定IP发来所有的数据包

编程之家2023-10-1399次浏览

大家好,今天小编来为大家解答java查询ip要导入什么包这个问题,java如何编程实现,获取固定IP发来所有的数据包 很多人还不知道,现在让我们一起来看看吧!

java查询ip要导入什么包,java如何编程实现,获取固定IP发来所有的数据包

如何在java中获取本地ip

很多朋友都想知道java如何获取本地ip?下面就一起来了解一下吧~

获取java本地ip一共有两种方法:1、inetAddress类;2、封装方法。

1、 inetAddress类

java查询ip要导入什么包,java如何编程实现,获取固定IP发来所有的数据包

通过InetAddress的实例对象包含以数字形式保存的IP地址,同时还可能包含主机名(如果使用主机名来获取InetAddress的实例,或者使用数字来构造,并且启用了反向主机名解析的功能)。InetAddress类提供了将主机名解析为IP地址(或反之)的方法。其生成InetAddress对象的方法。

import java.net.Inet4Address; import java.net.InetAddress; import java.net.UnknownHostException; public class Main {    public static void main(String[] args) throws UnknownHostException {        //Inet4Address address= (Inet4Address) Inet4Address.getLocalHost();        InetAddress address = InetAddress.getLocalHost();        System.out.println(address);//获取计算机名称和ip地址        String hostAddress = address.getHostAddress();        System.out.println(hostAddress);//获取ip地址        String hostName = address.getHostName();        System.out.println(hostName);//获取计算机名称    }}

2、封装方法。

java查询ip要导入什么包,java如何编程实现,获取固定IP发来所有的数据包
    public static String getLocalIp() {        Enumeration netInterfaces = null;        try {            netInterfaces = NetworkInterface.getNetworkInterfaces();            while (netInterfaces.hasMoreElements()) {                NetworkInterface nif = netInterfaces.nextElement();                Enumeration InetAddress = nif.getInetAddresses();                while (InetAddress.hasMoreElements()) {                    String ip = InetAddress.nextElement().getHostAddress();                    if (ip.startsWith("192.168")) {                        return ip;                    }                }            }        } catch (SocketException e) {        }        return "127.0.0.1";    }

java如何编程实现,获取固定IP发来所有的数据包

java获取固定IP发来所有的数据包,需要实现网络嗅探的部分功能:

代码如下;

/*******************

*JpcapTip.java

*/

packagem;

importjpcap.PacketReceiver;

importjpcap.JpcapCaptor;

importjpcap.packet.*;

importjpcap.NetworkInterface;

importjpcap.NetworkInterfaceAddress;

//importjava.net.InetAddress;

//importjava.net.UnknownHostException;

publicclassJpcapTipimplementsPacketReceiver{

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

}

}

java中UDP,DCP TCP与IP的区别是什么

不知道楼主是什么意思,UDP,DCP TCP与IP都是传输协议吧,那和Java有什么关系呢?

1. IP

是网络层中最重要的协议。

IP层接收由更低层(网络接口层例如以太网设备驱动程序)发来的数据包,并把该数据包发送到更高层---TCP或UDP层;相反,IP层也把从TCP或UDP层接收来的数据包传送到更低层。IP数据包是不可靠的,因为IP并没有做任何事情来确认数据包是按顺序发送的或者没有被破坏。IP数据包中含有发送它的主机的地址(源地址)和接收它的主机的地址(目的地址)。

高层的TCP和UDP服务在接收数据包时,通常假设包中的源地址是有效的。也可以这样说,IP地址形成了许多服务的认证基础,这些服务相信数据包是从一个有效的主机发送来的。IP确认包含一个选项,叫作IP source routing,可以用来指定一条源地址和目的地址之间的直接路径。对于一些TCP和UDP的服务来说,使用了该选项的IP包好象是从路径上的最后一个系统传递过来的,而不是来自于它的真实地点。这个选项是为了测试而存在的,说明了它可以被用来欺骗系统来进行平常是被禁止的连接。那么,许多依靠IP源地址做确认的服务将产生问题并且会被非法入侵。

2. TCP

如果IP数据包中有已经封好的TCP数据包,那么IP将把它们向‘上’传送到TCP层。TCP将包排序并进行错误检查,同时实现虚电路间的连接。TCP数据包中包括序号和确认,所以未按照顺序收到的包可以被排序,而损坏的包可以被重传。

TCP将它的信息送到更高层的应用程序,例如Telnet的服务程序和客户程序。应用程序轮流将信息送回TCP层,TCP层便将它们向下传送到IP层,设备驱动程序和物理介质,最后到接收方。

面向连接的服务(例如Telnet、FTP、rlogin、X Windows和SMTP)需要高度的可靠性,所以它们使用了TCP。DNS在某些情况下使用TCP(发送和接收域名数据库),但使用UDP传送有关单个主机的信息。

3.UDP

UDP与TCP位于同一层,但对于数据包的顺序错误或重发。因此,UDP不被应用于那些使用虚电路的面向连接的服务,UDP主要用于那些面向查询---应答的服务,例如NFS。相对于FTP或Telnet,这些服务需要交换的信息量较小。使用UDP的服务包括NTP(网落时间协议)和DNS(DNS也使用TCP)。

欺骗UDP包比欺骗TCP包更容易,因为UDP没有建立初始化连接(也可以称为握手)(因为在两个系统间没有虚电路),也就是说,与UDP相关的服务面临着更大的危险。

4.DCP?是不是写错了,应该是CDP吧!~

思科发现协议(CDP:Cisco Discovery Protocol)思科发现协议 CDP基本上是用来获取相邻设备的协议地址以及发现这些设备的平台。CDP也可为路由器的使用提供相关接口信息。CDP是一种独立媒体协议,运行在所有思科本身制造的设备上,包括路由器、网桥、接入服务器和交换机。需要注意的是,CDP是工作在 Layer 2的协议,默认情况下,每60秒以 01-00-0c-cc-cc-cc为目的地址发送一次组播通告,当达到180秒的holdtime上限后仍未获得邻居设备的通告时,将清除邻居设备信息。

文章到此结束,如果本次分享的java查询ip要导入什么包和java如何编程实现,获取固定IP发来所有的数据包 的问题解决了您的问题,那么我们由衷的感到高兴!

1mpa等于多少 1mpa等于多少kpajava x 是什么编码?JAVA中文是什么意思