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

📄 messageattribute.java

📁 解决了nat穿越的问题
💻 JAVA
字号:
/* * This file is part of JSTUN.  *  * Copyright (c) 2005 Thomas King <king@t-king.de> - All rights * reserved. *  * This software is licensed under either the GNU Public License (GPL), * or the Apache 2.0 license. Copies of both license agreements are * included in this distribution. */package de.javawi.jstun.attribute;import java.util.logging.*;import de.javawi.jstun.util.*;public abstract class MessageAttribute implements MessageAttributeInterface {	private static Logger logger = Logger.getLogger("de.javawi.stun.util.MessageAttribute");	MessageAttributeType type;	int length;		public MessageAttribute() {	}		public MessageAttribute(MessageAttributeType type) {		setType(type);	}		public void setType(MessageAttributeType type) {		this.type = type;	}		public MessageAttribute.MessageAttributeType getType() {		return type;	}		public static int typeToInteger(MessageAttributeType type) {		if (type == MessageAttributeType.MappedAddress) return MAPPEDADDRESS;		if (type == MessageAttributeType.ResponseAddress) return RESPONSEADDRESS;		if (type == MessageAttributeType.ChangeRequest) return CHANGEREQUEST;		if (type == MessageAttributeType.SourceAddress) return SOURCEADDRESS;		if (type == MessageAttributeType.ChangedAddress) return CHANGEDADDRESS;		if (type == MessageAttributeType.Username) return USERNAME;		if (type == MessageAttributeType.Password) return PASSWORD;		if (type == MessageAttributeType.MessageIntegrity) return MESSAGEINTEGRITY;		if (type == MessageAttributeType.ErrorCode) return ERRORCODE;		if (type == MessageAttributeType.UnknownAttribute) return UNKNOWNATTRIBUTE;		if (type == MessageAttributeType.ReflectedFrom) return REFLECTEDFROM;		if (type == MessageAttributeType.Dummy) return DUMMY;		return -1;	}		public static MessageAttributeType intToType(long type) {		if (type == MAPPEDADDRESS) return MessageAttributeType.MappedAddress;		if (type == RESPONSEADDRESS) return MessageAttributeType.ResponseAddress;		if (type == CHANGEREQUEST) return MessageAttributeType.ChangeRequest;		if (type == SOURCEADDRESS) return MessageAttributeType.SourceAddress;		if (type == CHANGEDADDRESS) return MessageAttributeType.ChangedAddress;		if (type == USERNAME) return MessageAttributeType.Username;		if (type == PASSWORD) return MessageAttributeType.Password;		if (type == MESSAGEINTEGRITY) return MessageAttributeType.MessageIntegrity;		if (type == ERRORCODE) return MessageAttributeType.ErrorCode;		if (type == UNKNOWNATTRIBUTE) return MessageAttributeType.UnknownAttribute;		if (type == REFLECTEDFROM ) return MessageAttributeType.ReflectedFrom;		if (type == DUMMY ) return MessageAttributeType.Dummy;		return MessageAttributeType.Dummy;	}		abstract public byte[] getBytes() throws UtilityException;	//abstract public MessageAttribute parse(byte[] data) throws MessageAttributeParsingException;		public int getLength() throws UtilityException {		int length = getBytes().length;		return length;	}		public static MessageAttribute parseCommonHeader(byte[] data) throws MessageAttributeParsingException {		try {						byte[] typeArray = new byte[2];			System.arraycopy(data, 0, typeArray, 0, 2);			int type = Utility.TwoBytesToInteger(typeArray);			byte[] lengthArray = new byte[2];			System.arraycopy(data, 2, lengthArray, 0, 2);			int lengthValue = Utility.TwoBytesToInteger(lengthArray);			byte[] valueArray = new byte[lengthValue];			System.arraycopy(data, 4, valueArray, 0, lengthValue);			MessageAttribute ma;			switch (type) {			case MAPPEDADDRESS: ma = MappedAddress.parse(valueArray); break;			case RESPONSEADDRESS: ma = ResponseAddress.parse(valueArray); break;			case CHANGEREQUEST: ma = ChangeRequest.parse(valueArray); break;			case SOURCEADDRESS: ma = SourceAddress.parse(valueArray); break;			case CHANGEDADDRESS: ma = ChangedAddress.parse(valueArray); break;			case USERNAME: ma = Username.parse(valueArray); break;			case PASSWORD: ma = Password.parse(valueArray); break;			case MESSAGEINTEGRITY: ma = MessageIntegrity.parse(valueArray); break;			case ERRORCODE: ma = ErrorCode.parse(valueArray); break;			case UNKNOWNATTRIBUTE: ma = UnknownAttribute.parse(valueArray); break;			case REFLECTEDFROM: ma = ReflectedFrom.parse(valueArray); break;			default: logger.config("MessageAttribute with type " + type + " unkown" + "."); ma = Dummy.parse(valueArray); break;			}			return ma;		} catch (UtilityException ue) {			throw new MessageAttributeParsingException("Parsing Error");		}	}}

⌨️ 快捷键说明

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