⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 icmppacket.java

📁 在windows下使用时先安装winpcap
💻 JAVA
字号:
package jpcap.packet;

import java.net.InetAddress;
import java.net.UnknownHostException;

/** This class represents ICMP packet. */
public class ICMPPacket extends IPPacket
{
	/**
	* echo reply
	*/
	public static final short ICMP_ECHOREPLY = 0;
	/**
	* dest unreachable
	*/
	public static final short ICMP_UNREACH   = 3;
	  /**
	  * dest unreachable code: bad net
	  */
	  public static final short ICMP_UNREACH_NET = 0;
	  /**
	  * dest unreachable code: bad host
	  */
	  public static final short ICMP_UNREACH_HOST = 1;
	  /**
	  * dest unreachable code: bad protocol
	  */
	  public static final short ICMP_UNREACH_PROTOCOL = 2;
  	  /**
  	  * dest unreachable code: bad port
  	  */
	  public static final short ICMP_UNREACH_PORT = 3;
	  /**
	  * dest unreachable code: IP_DF caused drop
	  */
	  public static final short ICMP_UNREACH_NEEDFRAG = 4;
	  /**
	  * dest unreachable code: src route failed
	  */
	  public static final short ICMP_UNREACH_SRCFAIL = 5;
	  /**
	  * dest unreachable code: unknown net
	  */
	  public static final short ICMP_UNREACH_NET_UNKNOWN = 6;
	  /**
	  * dest unreachable code: unknown host
	  */
	  public static final short ICMP_UNREACH_HOST_UNKNOWN = 7;
	  /**
	  * dest unreachable code: src host isolated
	  */
	  public static final short ICMP_UNREACH_ISOLATED = 8;
	  /**
	  * dest unreachable code: prohibited access
	  */
	  public static final short ICMP_UNREACH_NET_PROHIB = 9;
	  /**
	  * dest unreachable code: ditto
	  */
	  public static final short ICMP_UNREACH_HOST_PROHIB = 10;
	  /**
	  * dest unreachable code: bad tos for net
	  */
	  public static final short ICMP_UNREACH_TOSNET = 11;
	  /**
	  * dest unreachable code: bad tos for host
	  */
	  public static final short ICMP_UNREACH_TOSHOST = 12;
	  /**
	  * dest unreachable code: admin prohib
	  */
	  public static final short ICMP_UNREACH_FILTER_PROHIB = 13;
	  /**
	  * dest unreachable code: host prec vio.
	  */
	  public static final short ICMP_UNREACH_HOST_PRECEDENCE = 14;
	  /**
	  * dest unreachable code: prec cutoff
	  */
	  public static final short ICMP_UNREACH_PRECEDENCE_CUTOFF = 15;
	/**
	* packet lost, slow down
	*/
	public static final short ICMP_SOURCEQUENCH	= 4;
	/**
	* redirect
	*/
	public static final short ICMP_REDIRECT = 5;
	  /**
	  * redirect code: for network
	  */
	  public static final short ICMP_REDIRECT_NET = 0;
	  /**
	  * redirect code: for host
	  */
	  public static final short ICMP_REDIRECT_HOST = 1;
	  /**
	  * redirect code: for tos and net
	  */
	  public static final short ICMP_REDIRECT_TOSNET = 2;
	  /**
	  * redirect code: for tos and host
	  */
	  public static final short ICMP_REDIRECT_TOSHOST = 3;
	/**
	* echo request
	*/
	public static final short ICMP_ECHO = 8;
	/**
	* router advertisement
	*/
	public static final short ICMP_ROUTERADVERT	= 9;
	/**
	* router solicitation
	*/
	public static final short ICMP_ROUTERSOLICIT = 10;
	/**
	* time exceeded
	*/
	public static final short ICMP_TIMXCEED = 11;
	  /**
	  * time exceeded code: ttl==0 in transit
	  */
	  public static final short ICMP_TIMXCEED_INTRANS = 0;
	  /**
	  * time exceeded code: ttl==0 in reass
	  */
	  public static final short ICMP_TIMXCEED_REASS	= 1;
	/**
	* ip header bad
	*/
	public static final short ICMP_PARAMPROB = 12;
	  /**
	  * ip header bad code: error at param ptr
	  */
	  public static final short ICMP_PARAMPROB_ERRATPTR = 0;
	  /**
	  * ip header bad code: req. opt. absent
	  */
	  public static final short ICMP_PARAMPROB_OPTABSENT = 1;
	  /**
	  * ip header bad code: bad length
	  */
	  public static final short ICMP_PARAMPROB_LENGTH = 2;
	/**
	* timestamp request
	*/
	public static final short ICMP_TSTAMP = 13;
	/**
	* timestamp reply
	*/
	public static final short ICMP_TSTAMPREPLY = 14;
	/**
	* information request
	*/
	public static final short ICMP_IREQ = 15;
	/**
	* information reply
	*/
	public static final short ICMP_IREQREPLY = 16;
	/**
	* address mask request
	*/
	public static final short ICMP_MASKREQ = 17;
	/**
	* address mask reply
	*/
	public static final short ICMP_MASKREPLY = 18;

	/** ICMP type */
	public byte type;
	/** ICMP code */
	public byte code;
	/** Checksum */
	public short checksum;
	
	/**
	* ID
	*/
	public int id;
	/** Sequence number */
	public int seq;

	/** Subnet mask */
	public int subnetmask;
	
        /** Originate timestamp */
        public long orig_timestamp;
        
        /** Receive timestamp */
        public long recv_timestamp;
        
	/** Transmit timestamp */
	public long trans_timestamp;
	
	/**
	* MTU
	*/
	public short mtu;
	/** Returned IP packet */
	public IPPacket ippacket;
	
	/** Redirect address */
	public InetAddress redir_ip;
	
	/** The number of advertised addresses */
	public byte addr_num;
	/** Address entry size */
	public byte addr_entry_size;
	/** Address alive time */
	public short alive_time;
	/** Advertised addresses */
	public InetAddress[] router_ip;
	/** Preference */
	public int[] preference;
	
	void setValue(byte type,byte code,short checksum,short id,short seq){
		this.type=type;this.code=code;
		this.checksum=checksum;
		this.id=id;this.seq=seq;
	}
	
	void setID(int id,int seq){
		this.id=id;
		this.seq=seq;
	}

	void setTimestampValue(long orig,long recv,long trans){
		this.orig_timestamp=orig;
		this.recv_timestamp=recv;
		this.trans_timestamp=trans;
	}

	void setRedirectIP(byte[] ip){
		try {
			redir_ip=InetAddress.getByAddress(ip);
		} catch (UnknownHostException e) {
		}
	}

	void setRouterAdValue(byte addr_num,byte entry_size,short alive_time,
						  String[] addr,int[] pref){
		this.addr_num=addr_num;
		this.addr_entry_size=entry_size;
		this.alive_time=alive_time;

		for(int i=0;i<addr_num;i++){
			try{
				router_ip[i]=InetAddress.getByName(addr[i]);
			}catch(java.net.UnknownHostException e){}
			preference[i]=pref[i];
		}
	}

	/** Returns a string representation of this ICMP packet.<BR>
         * <BR>
         * Format丗type(type) code(code)
         * @return  string representation of this ICMP packet
         */
	public String toString(){
		return super.toString()+"type("+type+") code("+code+")";
	}
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -