📄 cwspaddress.java
字号:
/**
* JWAP - A Java Implementation of the WAP Protocols
* Copyright (C) 2001-2004 Niko Bender
*
* This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public
* License as published by the Free Software Foundation; either
* version 2.1 of the License, or (at your option) any later version.
*
* This library is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* Lesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General Public
* License along with this library; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
*/
package net.sourceforge.jwap.wsp.pdu;
import java.net.InetAddress;
import java.net.UnknownHostException;
import java.util.StringTokenizer;
import net.sourceforge.jwap.util.BitArrayOutputStream;
import net.sourceforge.jwap.util.Logger;
import net.sourceforge.jwap.wsp.CWSPSocketAddress;
public class CWSPAddress {
/**
* bearer Types according to WAP-259-WDP-20010614-a
* only two of them implemented here!
*/
public static final int BEARER_TYPE_GSM_CSD = 0x0A;
public static final int BEARER_TYPE_GSM_GPRS = 0x0B;
public boolean bearerTypeIncluded; // 1st bit
public boolean portNumberIncluded; // 2nd bit
public long addressLen; // 6bits
public long bearerType; // uint8
public long portNumber; // uint16
public short bearerAddressToUse1; // multiple octets
public short bearerAddressToUse2;
public short bearerAddressToUse3;
public short bearerAddressToUse4;
private static Logger logger = Logger.getLogger(CWSPAddress.class);
public CWSPAddress(boolean bearerTypeIncluded, boolean portNumberIncluded,
short bearerType, int portNumber, String bearerAddressToUse_IP) {
this.bearerTypeIncluded = bearerTypeIncluded;
this.portNumberIncluded = portNumberIncluded;
this.addressLen = 4;
this.bearerType = bearerType;
this.portNumber = portNumber;
StringTokenizer t = new StringTokenizer(bearerAddressToUse_IP, ".",
false);
bearerAddressToUse1 = Short.parseShort(t.nextToken());
bearerAddressToUse2 = Short.parseShort(t.nextToken());
bearerAddressToUse3 = Short.parseShort(t.nextToken());
bearerAddressToUse4 = Short.parseShort(t.nextToken());
}
/**
* get the encoded byte array of the address
*/
public byte[] getBytes() {
BitArrayOutputStream out = new BitArrayOutputStream();
out.write(bearerTypeIncluded);
out.write(portNumberIncluded);
out.write(addressLen, 6);
out.write(bearerType, 8);
out.write(portNumber, 16);
out.write(bearerAddressToUse1, 8);
out.write(bearerAddressToUse2, 8);
out.write(bearerAddressToUse3, 8);
out.write(bearerAddressToUse4, 8);
return out.toByteArray();
}
/**
* copmpares all fields of the address
*/
public boolean equals(Object a) {
CWSPAddress b = (CWSPAddress) a;
if ((this.bearerTypeIncluded == b.bearerTypeIncluded) &&
(this.portNumberIncluded == b.portNumberIncluded) &&
(this.addressLen == b.addressLen) &&
(this.bearerType == b.bearerType) &&
(this.portNumber == b.portNumber) &&
(this.bearerAddressToUse1 == b.bearerAddressToUse1) &&
(this.bearerAddressToUse2 == b.bearerAddressToUse2) &&
(this.bearerAddressToUse3 == b.bearerAddressToUse3) &&
(this.bearerAddressToUse4 == b.bearerAddressToUse4)) {
return true;
} else {
return false;
}
}
/////////////////////////////////////////////////////////////////////////////
//////////////////////////////// GET/SET ////////////////////////////////////
public boolean getBearerTypeIncluded() {
return bearerTypeIncluded;
}
public boolean getPortNumberIncluded() {
return portNumberIncluded;
}
public long getAddressLen() {
return addressLen;
}
public long getBearerType() {
return bearerType;
}
public long getPortNumber() {
return portNumber;
}
public InetAddress getInetAddress() {
InetAddress ret = null;
String addr = getBearerAddressToUse();
try {
ret = InetAddress.getByName(addr);
} catch (UnknownHostException e) {
logger.warn(addr+": Unable to convert to InetAddress", e);
}
return ret;
}
public CWSPSocketAddress getSocketAddress() {
InetAddress addr = getInetAddress();
CWSPSocketAddress ret = null;
if( addr != null ) {
ret = new CWSPSocketAddress(addr, (int)portNumber);
}
return ret;
}
public String getBearerAddressToUse() {
StringBuffer sb = new StringBuffer();
sb.append(bearerAddressToUse1).append(".")
.append(bearerAddressToUse2).append(".")
.append(bearerAddressToUse3).append(".")
.append(bearerAddressToUse4);
return sb.toString();
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -