亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? dhcpoption.java

?? DHCP 的JAVA實現
?? JAVA
?? 第 1 頁 / 共 4 頁
字號:
	    } catch (IOException e) {
			logger.log(Level.SEVERE, "Unexpected IOException", e);
	        return buf.toByteArray();
	    }
    }
    /**
     * Converts DHO_DHCP_AGENT_OPTIONS (82) option type to a LinkedMap.
     * 
     * <p>Order of parameters is preserved (use avc <tt>LinkedHashmap</tt<).
     * Keys are of type <tt>Byte</tt>, values are of type <tt>String</tt>.
     * 
     * @param buf byte[] buffer returned by </tt>getOptionRaw</tt>
     * @return the LinkedHashmap of values, <tt>null</tt> if buf is <tt>null</tt>
     */
    public static final Map<Byte, String> agentOptionsToMap(byte[] buf) {
    	if (buf == null) {
            return null;
        }

        Map<Byte, String> map = new LinkedHashMap<Byte, String>();
        int               i   = 0;

        while (i < buf.length) {
            if (buf.length - i < 2) {
                break;    // not enough data left
            }
            Byte key     = buf[i++];
            int  size    = unsignedByte(buf[i++]);
            int  instock = buf.length - i;

            if (size > instock) {
                size = instock;
            }
            map.put(key, DHCPPacket.bytesToString(buf, i, size));
            i += size;
        }
        return map;
    }
    
    /**
     * Returns the type of the option based on the option code.
     * 
     * <p>The type is returned as a <tt>Class</tt> object:
     * <ul>
     * 	<li><tt>InetAddress.class</tt></li>
     * 	<li><tt>InetAddress[].class</tt></li>
     * 	<li><tt>int.class</tt></li>
     * 	<li><tt>short.class</tt></li>
     * 	<li><tt>short[].class</tt></li>
     * 	<li><tt>byte.class</tt></li>
     * 	<li><tt>byte[].class</tt></li>
     * 	<li><tt>String.class</tt></li>
     * </ul>
     * 
     * <p>Please use <tt>getSimpleName()</tt> methode of <tt>Class</tt> object for the String representation.
     * @param code the DHCP option code
     * @return the Class object representing accepted types
     */
    public static Class getOptionFormat(byte code) {
    	OptionFormat format = _DHO_FORMATS.get(code);
    	if (format == null) {
    		return null;
    	}
    	switch (format) {
		case INET:
			return InetAddress.class;
		case INETS:
			return InetAddress[].class;
		case INT:
			return int.class;
		case SHORT:
			return short.class;
		case SHORTS:
			return short[].class;
		case BYTE:
			return byte.class;
		case BYTES:
			return byte[].class;
		case STRING:
			return String.class;
		default:
			return null;
    	}
    }

    /**
     * Simple method for converting from string to supported class format.
     * 
     * <p>Support values are:
     * <ul>
     *  <li>InetAddress, inet</li>
     * 	<li>InetAddress[], inets</li>
     * 	<li>int</li>
     * 	<li>short</li>
     * 	<li>short[], shorts</li>
     * 	<li>byte</li>
     * 	<li>byte[], bytes</li>
     * 	<li>String, string</li>
     * </ul>
     * @param className name of the data format (see above)
     * @return <tt>Class</tt> or <tt>null</tt> if not supported
     */
    public static Class string2Class(String className) {
    	if ("InetAddress".equals(className)) return InetAddress.class;
    	if ("inet".equals(className)) return InetAddress.class;
    	if ("InetAddress[]".equals(className)) return InetAddress[].class;
    	if ("inets".equals(className)) return InetAddress[].class;
    	if ("int".equals(className)) return int.class;
    	if ("short".equals(className)) return short.class;
    	if ("short[]".equals(className)) return short[].class;
    	if ("shorts".equals(className)) return short[].class;
    	if ("byte".equals(className)) return byte.class;
    	if ("byte[]".equals(className)) return byte[].class;
    	if ("bytes".equals(className)) return byte[].class;
    	if ("String".equals(className)) return String.class;
    	if ("string".equals(className)) return String.class;
    	return null;
    }
    
    /**
     * Parse an option from a pure string representation.
     * 
     * <P>The expected class is passed as a parameter, and can be provided by the 
     * <tt>string2Class()</tt> method from a string representation of the class.
     * 
     * <P>TODO examples
     * 
     * @param code DHCP option code
     * @param format expected Java Class after conversion
     * @param value string representation of the value
     * @return the DHCPOption object
     */
    public static DHCPOption parseNewOption(byte code, Class format, String value) {
    	if ((format == null) || (value == null)) {
    		throw new NullPointerException();
    	}

    	if (short.class.equals(format)) {								// short
    		return newOptionAsShort(code, (short)Integer.parseInt(value));
    	} else if (short[].class.equals(format)) {					// short[]
    		String[] listVal = value.split(" ");
    		short[] listShort = new short[listVal.length];
    		for (int i=0; i<listVal.length; i++) {
    			listShort[i] = (short) Integer.parseInt(listVal[i]);
    		}
    		return newOptionAsShorts(code, listShort);
    	} else if (int.class.equals(format)) {						// int
    		return newOptionAsInt(code, Integer.parseInt(value));
    	} else if (String.class.equals(format)) {						// String
    		return newOptionAsString(code, value);
    	} else if (byte.class.equals(format)) {						// byte
			return newOptionAsByte(code, (byte) Integer.parseInt(value));
			// TODO be explicit about BYTE allowed from -128 to 255 (unsigned int support)
    	} else if (byte[].class.equals(format)) {						// byte[]
    		value = value.replace(".", " ");
    		String[] listVal = value.split(" ");
    		byte[] listBytes = new byte[listVal.length];
    		for (int i=0; i<listVal.length; i++) {
    			listBytes[i] = (byte) Integer.parseInt(listVal[i]);
    		}
    		return new DHCPOption(code, listBytes);
    	} else if (InetAddress.class.equals(format)) {					// InetAddress
    		try {
    			return newOptionAsInetAddress(code, InetAddress.getByName(value));
    		} catch (UnknownHostException e) {
    			logger.log(Level.SEVERE, "Invalid address:"+value, e);
    			return null;
    		}
    	} else if (InetAddress[].class.equals(format)) {				// InetAddress[]
    		String[] listVal = value.split(" ");
    		InetAddress[] listInet = new InetAddress[listVal.length];
    		try {
	    		for (int i=0; i<listVal.length; i++) {
	    			listInet[i] = InetAddress.getByName(listVal[i]);
	    		}
    		} catch (UnknownHostException e) {
    			logger.log(Level.SEVERE, "Invalid address", e);
    			return null;
    		}
    		return newOptionAsInetAddresses(code, listInet);
    	}
    	return null;
    }
    // ----------------------------------------------------------------------
    // Internal constants for high-level option type conversions.
    //
    // formats of options
    //
    enum OptionFormat {
        INET,	// 4 bytes IP,				size = 4
        INETS,	// list of 4 bytes IP,		size = 4*n
        INT,	// 4 bytes integer,			size = 4
        SHORT,	// 2 bytes short,			size = 2
        SHORTS,	// list of 2 bytes shorts,	size = 2*n
        BYTE,	// 1 byte,					size = 1
        BYTES,	// list of bytes,			size = n
        STRING,	// string,					size = n
        //RELAYS	= 9;	// DHCP sub-options (rfc 3046)
        //ID		= 10;	// client identifier : byte (htype) + string (chaddr)
    	
    }
    
    //
    // list of formats by options
    //
    private static final Object[] _OPTION_FORMATS = {
            DHO_SUBNET_MASK,					OptionFormat.INET,
            DHO_TIME_OFFSET,					OptionFormat.INT,
            DHO_ROUTERS,						OptionFormat.INETS,
            DHO_TIME_SERVERS,					OptionFormat.INETS,
            DHO_NAME_SERVERS,					OptionFormat.INETS,
            DHO_DOMAIN_NAME_SERVERS,			OptionFormat.INETS,
            DHO_LOG_SERVERS,					OptionFormat.INETS,
            DHO_COOKIE_SERVERS,					OptionFormat.INETS,
            DHO_LPR_SERVERS,					OptionFormat.INETS,
            DHO_IMPRESS_SERVERS,				OptionFormat.INETS,
            DHO_RESOURCE_LOCATION_SERVERS,		OptionFormat.INETS,
            DHO_HOST_NAME,						OptionFormat.STRING,
            DHO_BOOT_SIZE,						OptionFormat.SHORT,
            DHO_MERIT_DUMP,						OptionFormat.STRING,
            DHO_DOMAIN_NAME,					OptionFormat.STRING,
            DHO_SWAP_SERVER,					OptionFormat.INET,
            DHO_ROOT_PATH,						OptionFormat.STRING,
            DHO_EXTENSIONS_PATH,				OptionFormat.STRING,
            DHO_IP_FORWARDING,					OptionFormat.BYTE,
            DHO_NON_LOCAL_SOURCE_ROUTING,		OptionFormat.BYTE,
            DHO_POLICY_FILTER,					OptionFormat.INETS,
            DHO_MAX_DGRAM_REASSEMBLY,			OptionFormat.SHORT,
            DHO_DEFAULT_IP_TTL,					OptionFormat.BYTE,
            DHO_PATH_MTU_AGING_TIMEOUT,			OptionFormat.INT,
            DHO_PATH_MTU_PLATEAU_TABLE,			OptionFormat.SHORTS,
            DHO_INTERFACE_MTU,					OptionFormat.SHORT,
            DHO_ALL_SUBNETS_LOCAL,				OptionFormat.BYTE,
            DHO_BROADCAST_ADDRESS,				OptionFormat.INET,
            DHO_PERFORM_MASK_DISCOVERY,			OptionFormat.BYTE,
            DHO_MASK_SUPPLIER,					OptionFormat.BYTE,
            DHO_ROUTER_DISCOVERY,				OptionFormat.BYTE,
            DHO_ROUTER_SOLICITATION_ADDRESS,	OptionFormat.INET,
            DHO_STATIC_ROUTES,					OptionFormat.INETS,
            DHO_TRAILER_ENCAPSULATION,			OptionFormat.BYTE,
            DHO_ARP_CACHE_TIMEOUT,				OptionFormat.INT,
            DHO_IEEE802_3_ENCAPSULATION,		OptionFormat.BYTE,
            DHO_DEFAULT_TCP_TTL,				OptionFormat.BYTE,
            DHO_TCP_KEEPALIVE_INTERVAL,			OptionFormat.INT,
            DHO_TCP_KEEPALIVE_GARBAGE,			OptionFormat.BYTE,
            DHO_NIS_SERVERS,					OptionFormat.INETS,
            DHO_NTP_SERVERS,					OptionFormat.INETS,
            DHO_NETBIOS_NAME_SERVERS,			OptionFormat.INETS,
            DHO_NETBIOS_DD_SERVER,				OptionFormat.INETS,
            DHO_NETBIOS_NODE_TYPE,				OptionFormat.BYTE,
            DHO_NETBIOS_SCOPE,					OptionFormat.STRING,
            DHO_FONT_SERVERS,					OptionFormat.INETS,
            DHO_X_DISPLAY_MANAGER,				OptionFormat.INETS,
            DHO_DHCP_REQUESTED_ADDRESS,			OptionFormat.INET,
            DHO_DHCP_LEASE_TIME,				OptionFormat.INT,
            DHO_DHCP_OPTION_OVERLOAD,			OptionFormat.BYTE,
            DHO_DHCP_MESSAGE_TYPE,				OptionFormat.BYTE,
            DHO_DHCP_SERVER_IDENTIFIER,			OptionFormat.INET,
            DHO_DHCP_PARAMETER_REQUEST_LIST,	OptionFormat.BYTES,
            DHO_DHCP_MESSAGE,					OptionFormat.STRING,
            DHO_DHCP_MAX_MESSAGE_SIZE,			OptionFormat.SHORT,
            DHO_DHCP_RENEWAL_TIME,				OptionFormat.INT,
            DHO_DHCP_REBINDING_TIME,			OptionFormat.INT,
            DHO_VENDOR_CLASS_IDENTIFIER,		OptionFormat.STRING,
            DHO_NWIP_DOMAIN_NAME,				OptionFormat.STRING,
            DHO_NISPLUS_DOMAIN,					OptionFormat.STRING,
            DHO_NISPLUS_SERVER,					OptionFormat.STRING,
            DHO_TFTP_SERVER,					OptionFormat.STRING,
            DHO_BOOTFILE,						OptionFormat.STRING,
            DHO_MOBILE_IP_HOME_AGENT,			OptionFormat.INETS,
            DHO_SMTP_SERVER,					OptionFormat.INETS,
            DHO_POP3_SERVER,					OptionFormat.INETS,
            DHO_NNTP_SERVER,					OptionFormat.INETS,
            DHO_WWW_SERVER,						OptionFormat.INETS,
            DHO_FINGER_SERVER,					OptionFormat.INETS,
            DHO_IRC_SERVER,						OptionFormat.INETS,
            DHO_STREETTALK_SERVER,				OptionFormat.INETS,
            DHO_STDA_SERVER,					OptionFormat.INETS,
            DHO_NDS_SERVERS,					OptionFormat.INETS,
            DHO_NDS_TREE_NAME,					OptionFormat.STRING,
            DHO_NDS_CONTEXT,					OptionFormat.STRING,
            DHO_CLIENT_LAST_TRANSACTION_TIME,	OptionFormat.INT,
            DHO_ASSOCIATED_IP,					OptionFormat.INETS,
            DHO_USER_AUTHENTICATION_PROTOCOL,	OptionFormat.STRING,
            DHO_AUTO_CONFIGURE,					OptionFormat.BYTE,
            DHO_NAME_SERVICE_SEARCH,			OptionFormat.SHORTS,
            DHO_SUBNET_SELECTION,				OptionFormat.INET,
            DHO_DOMAIN_SEARCH,					OptionFormat.STRING,
            
    };    
    static final Map<Byte, OptionFormat> _DHO_FORMATS = new LinkedHashMap<Byte, OptionFormat>();

    /*
     * preload at startup Maps with constants
     * allowing reverse lookup
     */
    static {
        // construct map of formats
        for (int i=0; i<_OPTION_FORMATS.length / 2; i++) {
            _DHO_FORMATS.put((Byte) _OPTION_FORMATS[i*2],(OptionFormat) _OPTION_FORMATS[i*2+1]);
        }
    }

    // ========================================================================
    // main: print DHCP options for Javadoc
    public static void main(String[] args) {
        String all     = "";
        String inet1   = "";
        String inets   = "";
        String int1    = "";
        String short1  = "";
        String shorts  = "";
        String byte1   = "";
        String bytes   = "";
        String string1 = "";

        for (Byte codeByte : _DHO_NAMES.keySet()) {
            byte code = codeByte.byteValue();
            String s = "";
            if (code != DHO_PAD && code != DHO_END) {
                s = " * " + _DHO_NAMES.get(codeByte) + '(' + (code & 0xFF) + ")\n";
            }
            
            all += s;
            if (_DHO_FORMATS.containsKey(codeByte)) {
	            switch (_DHO_FORMATS.get(codeByte)) {
	            	case INET:   inet1   += s; break;
	            	case INETS:  inets   += s; break;
	            	case INT:    int1    += s; break;
	            	case SHORT:  short1  += s; break;
	            	case SHORTS: shorts  += s; break;
	            	case BYTE:   byte1   += s; break;
	            	case BYTES:  bytes   += s; break;
	            	case STRING: string1 += s; break;
	            	default:
	            }
            }
        }

        System.out.println("---All codes---");
        System.out.println(all);
        System.out.println("---INET---");
        System.out.println(inet1);
        System.out.println("---INETS---");
        System.out.println(inets);
        System.out.println("---INT---");
        System.out.println(int1);
        System.out.println("---SHORT---");
        System.out.println(short1);
        System.out.println("---SHORTS---");
        System.out.println(shorts);
        System.out.println("---BYTE---");
        System.out.println(byte1);
        System.out.println("---BYTES---");
        System.out.println(bytes);
        System.out.println("---STRING---");
        System.out.println(string1);
    }
}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
欧美色图第一页| 欧美va在线播放| 国产精品久久久久久亚洲毛片| 日韩中文字幕亚洲一区二区va在线| av电影在线观看一区| 中文字幕视频一区| 99精品热视频| 日本亚洲天堂网| 日韩一区二区在线观看视频播放| 亚洲成人动漫在线观看| 精品久久人人做人人爽| 国产成人在线视频免费播放| 国产永久精品大片wwwapp| 精品1区2区在线观看| 久久er99热精品一区二区| 3751色影院一区二区三区| 视频一区视频二区中文字幕| 精品乱码亚洲一区二区不卡| 国产精品情趣视频| 成人av在线观| 亚洲日本护士毛茸茸| 99视频一区二区| 亚洲成人综合视频| 在线播放视频一区| 国产老女人精品毛片久久| 欧美mv和日韩mv国产网站| 国产成人午夜视频| 国产精品第一页第二页第三页| 99精品偷自拍| 亚洲成av人片在线观看无码| 精品福利在线导航| 欧美私模裸体表演在线观看| 老司机精品视频线观看86| 亚洲欧美日韩成人高清在线一区| 日韩三级av在线播放| av影院午夜一区| 美女视频免费一区| 国产一区二区三区四区五区入口 | 蜜桃一区二区三区在线| 日韩欧美一区电影| 99精品久久只有精品| jiyouzz国产精品久久| 日韩欧美国产成人一区二区| 一区二区三区**美女毛片| 日本一区二区三区视频视频| 日本一区二区久久| 国产精品乱码一区二区三区软件| 久久综合国产精品| 久久精品日韩一区二区三区| 久久久高清一区二区三区| 久久久久久久久99精品| 国产亚洲精品久| 视频一区国产视频| 美女尤物国产一区| 国产美女av一区二区三区| 国产不卡在线一区| 91在线观看下载| 欧美亚洲国产一区在线观看网站| 在线观看免费亚洲| 欧美丰满一区二区免费视频| 精品日韩欧美一区二区| 国产农村妇女毛片精品久久麻豆| 国产精品嫩草久久久久| 亚洲精品久久久蜜桃| 日韩精品午夜视频| 国产一区高清在线| 99久久久精品免费观看国产蜜| 91久久精品午夜一区二区| 5566中文字幕一区二区电影| 精品久久人人做人人爱| 亚洲三级在线观看| 五月激情丁香一区二区三区| 另类成人小视频在线| 成人午夜视频网站| 在线不卡的av| 国产色爱av资源综合区| 亚洲自拍偷拍网站| 国产一区二区三区免费播放| 色综合久久久久综合99| 日韩一级高清毛片| 综合自拍亚洲综合图不卡区| 天天av天天翘天天综合网| 国产激情精品久久久第一区二区| 91国产成人在线| 久久久久久久久99精品| 亚洲成va人在线观看| 成人综合日日夜夜| 欧美一级久久久| 亚洲欧美日韩中文字幕一区二区三区 | 国产精品一区一区| 欧美日韩国产免费一区二区 | 久久久国际精品| 午夜日韩在线观看| 99re这里都是精品| 久久午夜羞羞影院免费观看| 亚洲一区二区三区中文字幕在线| 国产美女在线精品| 欧美日韩免费高清一区色橹橹| 国产精品无人区| 精品制服美女丁香| 欧美日韩一区二区三区在线| 国产精品美女www爽爽爽| 日韩电影在线免费看| 91影院在线免费观看| 久久久噜噜噜久噜久久综合| 日韩在线a电影| 色女孩综合影院| 亚洲国产精品成人久久综合一区| 六月丁香婷婷色狠狠久久| 在线日韩av片| 亚洲蜜臀av乱码久久精品| 成人中文字幕在线| 久久午夜色播影院免费高清| 日本不卡视频在线| 欧美午夜精品久久久| 日韩理论片一区二区| 国产麻豆精品视频| 欧美电影免费观看高清完整版在| 午夜欧美大尺度福利影院在线看| 一本大道av一区二区在线播放| 国产精品另类一区| 丁香啪啪综合成人亚洲小说| 精品动漫一区二区三区在线观看| 免费在线观看不卡| 欧美肥胖老妇做爰| 天天综合色天天综合色h| 欧美中文字幕一区二区三区 | 欧美性受极品xxxx喷水| 亚洲美女屁股眼交3| av一区二区久久| 国产精品久久午夜| 成人精品高清在线| 最新成人av在线| 91视频你懂的| 亚洲激情在线激情| 91官网在线观看| 亚洲成人tv网| 欧美一区二区日韩一区二区| 秋霞av亚洲一区二区三| 欧美精品在线视频| 日本vs亚洲vs韩国一区三区| 日韩一级片网站| 激情综合五月天| 久久精品一二三| 不卡高清视频专区| 亚洲激情图片qvod| 欧美日韩精品一区二区三区四区| 日韩在线一区二区三区| 精品99久久久久久| 成人av资源在线| 玉米视频成人免费看| 91麻豆精品国产无毒不卡在线观看| 亚洲成人一区在线| 欧美一区二区大片| 国产一二精品视频| 国产精品成人免费| 欧美区视频在线观看| 乱一区二区av| 国产精品免费人成网站| 一本久久a久久免费精品不卡| 亚洲网友自拍偷拍| 精品国产免费人成电影在线观看四季| 国产一区高清在线| 亚洲精品日日夜夜| 日韩一区二区影院| 成人一区在线观看| 亚洲一区二区精品视频| 精品久久久久一区| 99视频热这里只有精品免费| 午夜伦理一区二区| 久久久亚洲精品石原莉奈| av不卡在线播放| 日韩精品国产欧美| 亚洲国产精品成人综合| 欧美体内she精视频| 国产精品亚洲综合一区在线观看| 成人欧美一区二区三区| 日韩一区二区免费电影| 9久草视频在线视频精品| 婷婷夜色潮精品综合在线| 国产日韩欧美制服另类| 精品视频999| 成人国产精品免费网站| 日韩中文字幕不卡| 综合久久给合久久狠狠狠97色 | 欧美mv和日韩mv的网站| 色婷婷一区二区三区四区| 韩国精品久久久| 亚洲国产精品一区二区www在线| 国产亚洲美州欧州综合国| 欧美久久婷婷综合色| 91丨porny丨蝌蚪视频| 国产一区二区三区久久久| 亚洲成人在线观看视频| 中文字幕亚洲综合久久菠萝蜜| 制服丝袜av成人在线看| 色天使色偷偷av一区二区| 国产乱子伦一区二区三区国色天香| 一区二区高清在线| 中文字幕精品一区|