短信网关发送接受平台。

源代码在线查看: cmppbuffer.java

软件大小: 9455 K
上传用户: smashup
关键词: 短信 发送 网关
下载地址: 免注册下载 普通下载 VIP

相关代码

				import java.lang.*;
				import java.net.*;
				import java.io.*;
				
				import CMPPLog;
				import CMPPException;
				
				import CMPPUtility;
				
				public class CMPPBuffer
				{
					final private static int SIZEOF_BYTE 	= 1;
					final private static int SIZEOF_SHORT 	= 2;
					final private static int SIZEOF_INTEGER = 4;
					final private static int SIZEOF_LONG 	= 8;
				
					int m_nOffset;
					byte[] m_bBytes;
				
					public CMPPBuffer()
					{
						m_nOffset = 0;
						m_bBytes = null;
					}
				
					public CMPPBuffer(CMPPBuffer buffer)
					{
						m_nOffset = buffer.m_nOffset;
						m_bBytes = buffer.m_bBytes;
					}
				
					public int getLength()
					{
						return (m_bBytes == null) ? 0 : m_bBytes.length;
					}
				
					private byte getByte(int nOffset)
						throws CMPPException
					{
						if((nOffset < 0) || (nOffset + SIZEOF_BYTE) > m_bBytes.length)
						{
							throw new CMPPException("CMPPBuffer.getByte : not proper offset !");
						}
				
						byte bValue = m_bBytes[nOffset];
				
						return bValue;
					}
				
					private void setByte(int nOffset,byte bValue)
						throws CMPPException
					{
						if((nOffset < 0) || (nOffset + SIZEOF_BYTE) > m_bBytes.length)
						{
							throw new CMPPException("CMPPBuffer.setByte : not proper offset !");
						}
				
						m_bBytes[nOffset] = bValue;
					}
				
					private short getShort(int nOffset)
						throws CMPPException
					{
						if((nOffset < 0 ) || (nOffset + SIZEOF_SHORT) > m_bBytes.length)
						{
							throw new CMPPException("CMPPBuffer.getShort : not proper offset !");
						}
				
						short sValue = 0;
						for(int i = 0;i < SIZEOF_SHORT;i ++)
						{
							/*Big-Endian Order
							sValue 							sValue |= (m_bBytes[nOffset + i] & 0xff);
							*/
				
							//Network Order
							sValue |= (m_bBytes[nOffset + i] & 0xff) 						}
				
						return sValue;
					}
				
					private void setShort(int nOffset,short sValue)
						throws CMPPException
					{
						if((nOffset < 0) || (nOffset + SIZEOF_SHORT) > m_bBytes.length)
						{
							throw new CMPPException("CMPPBuffer.setShort : not proper offset !");
						}
				
						for(int i = 0;i < SIZEOF_SHORT;i ++)
						{
							/*Big-Endian Order
							m_bBytes[nOffset + SIZEOF_SHORT - i - 1] = (byte)sValue;
							*/
				
							//Network Order
							m_bBytes[nOffset + i] = (byte)sValue;
							sValue >>= 8;
						}
					}
				
					private int getInteger(int nOffset)
						throws CMPPException
					{
						if((nOffset < 0) || (nOffset + SIZEOF_INTEGER) > m_bBytes.length)
						{
							throw new CMPPException("CMPPBuffer.getInteger : not proper offset !");
						}
				
						int nValue = 0;
						for(int i = 0;i < SIZEOF_INTEGER;i ++)
						{
							/*Big-Endian Order
							nValue 							nValue |= (m_bBytes[nOffset + i] & 0xff);
							*/
				
							//Network Order
							nValue |= (m_bBytes[nOffset + i] & 0xff) 						}
				
						return nValue;
					}
				
					private void setInteger(int nOffset,int nValue)
						throws CMPPException
					{
						if((nOffset < 0) || (nOffset + SIZEOF_INTEGER) > m_bBytes.length)
						{
							throw new CMPPException("CMPPBuffer.setInteger : not proper offset !");
						}
				
						for(int i = 0;i < SIZEOF_INTEGER;i ++)
						{
							/*Big-Endian Order
							m_bBytes[nOffset + SIZEOF_INTEGER - i - 1] = (byte)nValue;
							nValue >>= 8;
							*/
				
							//Network Order
							m_bBytes[nOffset + i] = (byte)nValue;
							nValue >>= 8;
						}
					}
				
					private long getLong(int nOffset)
						throws CMPPException
					{
						if((nOffset < 0) || (nOffset + SIZEOF_LONG) > m_bBytes.length)
						{
							throw new CMPPException("CMPPBuffer.getLong : not proper offset !");
						}
				
						long lValue = 0;
						for(int i = 0;i < SIZEOF_LONG;i ++)
						{
							/*Big-Endian Order
							lValue = (lValue 							lValue |= (m_bBytes[nOffset + i] & 0xff);
							*/
				
							//Network Order
							lValue |= (m_bBytes[nOffset + i] & 0xff) 						}
				
						return lValue;
					}
				
					private void setLong(int nOffset,long lValue)
						throws CMPPException
					{
						if((nOffset < 0) || (nOffset + SIZEOF_LONG) > m_bBytes.length)
						{
							throw new CMPPException("CMPPBuffer.setInteger : not proper offset !");
						}
				
						for(int i = 0;i < SIZEOF_LONG;i ++)
						{
							/*Big-Endia Order
							m_bBytes[nOffset + SIZEOF_LONG - i - 1] = (byte)lValue;
							lValue >>= 8;
							*/
				
							//Network Order
							m_bBytes[nOffset + i] = (byte)lValue;
							lValue >>= 8;
						}
					}
				
					private void getBytes(int nOffset,byte[] bBytes)
						throws CMPPException
					{
						if(bBytes == null || bBytes.length 						{
							throw new CMPPException("CMPPBuffer.getBytes : null bBytes !");
						}
				
						if((nOffset < 0) || (nOffset + bBytes.length) > m_bBytes.length)
						{
							throw new CMPPException("CMPPBuffer.getBytes : not proper offset !");
						}
				
						for(int i = 0;i < bBytes.length;i ++)
						{
							bBytes[i] = m_bBytes[nOffset + i];
						}
					}
				
					private void setBytes(int nOffset,byte[] bBytes)
						throws CMPPException
					{
						if(bBytes == null || bBytes.length 						{
							throw new CMPPException("CMPPBuffer.setBytes : null bBytes !");
						}
				
						if((nOffset < 0) || (nOffset + bBytes.length) > m_bBytes.length)
						{
							throw new CMPPException("CMPPBuffer.setBytes : not proper offset !");
						}
				
						for(int i = 0;i < bBytes.length;i ++)
						{
							m_bBytes[nOffset + i] = bBytes[i];
						}
					}
				
					protected void inputBuffer(InputStream is,int nLength)
						throws IOException, CMPPException
					{
						byte[] bBytes = new byte[nLength];
				
						CMPPUtility.read(is,bBytes);
				
						CMPPLog.log("CMPPBuffer.inputBuffer : read " + nLength + " bytes !",
							CMPPLog.LOG_CMPP_BUFFER | CMPPLog.LOG_INPUT_METHOD);
				
						append(bBytes);
				
						dumpBuffer(CMPPLog.LOG_INPUT_METHOD);
					}
				
					protected void outputBuffer(OutputStream os)
						throws IOException, CMPPException
					{
						CMPPLog.log("CMPPBuffer.outputBuffer : write " + m_bBytes.length + " bytes !",
							CMPPLog.LOG_CMPP_BUFFER | CMPPLog.LOG_OUTPUT_METHOD);
				
						dumpBuffer(CMPPLog.LOG_OUTPUT_METHOD);
				
						CMPPUtility.write(os,m_bBytes);
				
						os.flush();
					}
				
					public void dumpBuffer(long lMethod)
					{
						CMPPLog.log("\tnOffset = " + m_nOffset,
							CMPPLog.LOG_CMPP_BUFFER | lMethod);
				
						CMPPLog.log("\tbBytes = 0x" + CMPPUtility.toHexString(m_bBytes),
							CMPPLog.LOG_CMPP_BUFFER | lMethod);
					}
				
					public void append(byte[] bytes)
						throws CMPPException
					{
						if(bytes == null || bytes.length 						{
							throw new CMPPException("CMPPBuffer.append : null bytes !");
						}
				
						int nLength = (m_bBytes == null) ? 0 : m_bBytes.length;
				
						byte[] bBytes = new byte[nLength + bytes.length];
				
						for(int i = 0;i < nLength;i ++)
						{
							bBytes[i] = m_bBytes[i];
						}
				
						m_bBytes = bBytes;
				
						setBytes(nLength,bytes);
					}
				
					public void insertByte(byte bValue)
						throws CMPPException
					{
						int nLength = (m_bBytes == null) ? 0 : m_bBytes.length;
				
						byte[] bBytes = new byte[nLength + SIZEOF_BYTE];
				
						for(int i = 0;i < nLength;i ++)
						{
							bBytes[i + SIZEOF_BYTE] = m_bBytes[i];
						}
				
						m_bBytes = bBytes;
				
						setByte(0,bValue);
					}
				
					public void insertShort(short sValue)
						throws CMPPException
					{
						int nLength = (m_bBytes == null) ? 0 : m_bBytes.length;
				
						byte[] bBytes = new byte[nLength + SIZEOF_SHORT];
				
						for(int i = 0;i < nLength;i ++)
						{
							bBytes[i + SIZEOF_SHORT] = m_bBytes[i];
						}
				
						m_bBytes = bBytes;
				
						setShort(0,sValue);
					}
				
					public void insertInteger(int nValue)
						throws CMPPException
					{
						int nLength = (m_bBytes == null) ? 0 : m_bBytes.length;
				
						byte[] bBytes = new byte[nLength + SIZEOF_INTEGER];
				
						for(int i = 0;i < nLength;i ++)
						{
							bBytes[i + SIZEOF_INTEGER] = m_bBytes[i];
						}
				
						m_bBytes = bBytes;
				
						setInteger(0,nValue);
					}
				
					public void insertLong(long lValue)
						throws CMPPException
					{
						int nLength = (m_bBytes == null) ? 0 : m_bBytes.length;
				
						byte[] bBytes = new byte[nLength + SIZEOF_LONG];
				
						for(int i = 0;i < nLength;i ++)
						{
							bBytes[i + SIZEOF_LONG] = m_bBytes[i];
						}
				
						m_bBytes = bBytes;
				
						setLong(0,lValue);
					}
				
					public void insertBytes(byte[] bytes)
						throws CMPPException
					{
						if(bytes == null || bytes.length 						{
							throw new CMPPException("CMPPBuffer.insertBytes : null bytes !");
						}
				
						int nLength = (m_bBytes == null) ? 0 : m_bBytes.length;
				
						byte[] bBytes = new byte[nLength + bytes.length];
				
						for(int i = 0;i < nLength;i ++)
						{
							bBytes[i + bytes.length] = m_bBytes[i];
						}
				
						m_bBytes = bBytes;
				
						setBytes(0,bytes);
					}
				
					public void insertString(String string)
						throws CMPPException
					{
						if(string == null || string.length() 						{
							throw new CMPPException("CMPPBuffer.insertString : null string !");
						}
				
						int nLength = string.length();
						byte[] bBytes = new byte[nLength];
				
						for(int i = 0;i < nLength;i ++)
						{
							bBytes[i] = (byte)(string.charAt(i) & 0x7f);
						}
				
						insertBytes(bBytes);
					}
				
					public byte getByte()
						throws CMPPException
					{
						byte bValue = getByte(m_nOffset);
						m_nOffset += SIZEOF_BYTE;
				
						return bValue;
					}
				
					public short getShort()
						throws CMPPException
					{
						short sValue = getShort(m_nOffset);
						m_nOffset += SIZEOF_SHORT;
				
						return sValue;
					}
				
					public int getInteger()
						throws CMPPException
					{
						int nValue = getInteger(m_nOffset);
						m_nOffset += SIZEOF_INTEGER;
				
						return nValue;
					}
				
					public long getLong()
						throws CMPPException
					{
						long lValue = getLong(m_nOffset);
						m_nOffset += SIZEOF_LONG;
				
						return lValue;
					}
				
					public void getBytes(byte[] bBytes)
						throws CMPPException
					{
						getBytes(m_nOffset,bBytes);
						m_nOffset += bBytes.length;
					}
				
					public byte[] getBytes(int nLength)
						throws CMPPException
					{
						if(nLength 						{
							return null;
						}
				
						byte[] bBytes = new byte[nLength];
						getBytes(bBytes);
				
						return bBytes;
					}
				
					public String getString(int nLength)
						throws CMPPException
					{
						byte[] bBytes = getBytes(nLength);
				
						if(bBytes != null && bBytes.length > 0)
						{
							String string = "";
							for(int i = 0;i < bBytes.length;i ++)
							{
								string += (char)(bBytes[i] & 0x7f);
							}
				
							return new String(string);
						}
				
						return null;
					}
				}			

相关资源