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

📄 sdpoutputstream.java

📁 java se平台蓝牙开发的插件 ,包括源码 根据readme 生成包很多东西可以自己DIY很实用
💻 JAVA
字号:
/* Copyright 2004 Intel Corporation This file is part of Blue Cove. Blue Cove 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. Blue Cove 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 Blue Cove; if not, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA */package com.intel.bluetooth;import java.io.FilterOutputStream;import java.io.IOException;import java.io.OutputStream;import java.util.Enumeration;import javax.bluetooth.DataElement;import javax.bluetooth.UUID;public class SDPOutputStream extends FilterOutputStream {	public SDPOutputStream(OutputStream out) {		super(out);	}	private void writeLong(long l, int size) throws IOException {		for (int i = 0; i < size; i++) {			write((int) (l >> (size - 1 << 3)));			l <<= 8;		}	}	private void writeBytes(byte[] b) throws IOException {		for (int i = 0; i < b.length; i++)			write(b[i]);	}	private int getLength(DataElement d) {		switch (d.getDataType()) {		case DataElement.NULL:			return 1;		case DataElement.U_INT_1:			return 2;		case DataElement.U_INT_2:			return 3;		case DataElement.U_INT_4:			return 5;		case DataElement.U_INT_8:			return 9;		case DataElement.U_INT_16:			return 17;		case DataElement.INT_1:			return 2;		case DataElement.INT_2:			return 3;		case DataElement.INT_4:			return 5;		case DataElement.INT_8:			return 9;		case DataElement.INT_16:			return 17;		case DataElement.UUID:			return 17;		case DataElement.STRING:		case DataElement.URL: {			byte[] b = ((String) d.getValue()).getBytes();			if (b.length < 0x100)				return b.length + 2;			else if (b.length < 0x10000)				return b.length + 3;			else				return b.length + 5;		}		case DataElement.BOOL:			return 2;		case DataElement.DATSEQ:		case DataElement.DATALT: {			int result = 5;			for (Enumeration e = (Enumeration) d.getValue(); e					.hasMoreElements();)				result += getLength((DataElement) e.nextElement());			return result;		}		default:			throw new IllegalArgumentException();		}	}	public void writeElement(DataElement d) throws IOException {		switch (d.getDataType()) {		case DataElement.NULL:			write(0 | 0);			break;		case DataElement.U_INT_1:			write(8 | 0);			writeLong(d.getLong(), 1);			break;		case DataElement.U_INT_2:			write(8 | 1);			writeLong(d.getLong(), 2);			break;		case DataElement.U_INT_4:			write(8 | 2);			writeLong(d.getLong(), 4);			break;		case DataElement.U_INT_8:			write(8 | 3);			writeBytes((byte[]) d.getValue());			break;		case DataElement.U_INT_16:			write(8 | 4);			writeBytes((byte[]) d.getValue());			break;		case DataElement.INT_1:			write(16 | 0);			writeLong(d.getLong(), 1);			break;		case DataElement.INT_2:			write(16 | 1);			writeLong(d.getLong(), 2);			break;		case DataElement.INT_4:			write(16 | 2);			writeLong(d.getLong(), 4);			break;		case DataElement.INT_8:			write(16 | 3);			writeLong(d.getLong(), 8);			break;		case DataElement.INT_16:			write(16 | 4);			writeBytes((byte[]) d.getValue());			break;		case DataElement.UUID:			write(24 | 4);			String stringValue = ((UUID) d.getValue()).toString();			byte[] uuidValue = new byte[16];			for (int i = 0; i < 16; i++)				uuidValue[i] = (byte) Integer.parseInt(stringValue.substring(						i * 2, i * 2 + 2), 16);			writeBytes(uuidValue);			break;		case DataElement.STRING: {			byte[] b = ((String) d.getValue()).getBytes();			if (b.length < 0x100) {				write(32 | 5);				writeLong(b.length, 1);			} else if (b.length < 0x10000) {				write(32 | 6);				writeLong(b.length, 2);			} else {				write(32 | 7);				writeLong(b.length, 4);			}			writeBytes(b);			break;		}		case DataElement.BOOL:			write(40 | 0);			writeLong(d.getBoolean() ? 1 : 0, 1);			break;		case DataElement.DATSEQ:			write(48 | 7);			writeLong(getLength(d) - 5, 4);			for (Enumeration e = (Enumeration) d.getValue(); e					.hasMoreElements();)				writeElement((DataElement) e.nextElement());			break;		case DataElement.DATALT:			write(56 | 7);			writeLong(getLength(d) - 5, 4);			for (Enumeration e = (Enumeration) d.getValue(); e					.hasMoreElements();)				writeElement((DataElement) e.nextElement());			break;		case DataElement.URL: {			byte[] b = ((String) d.getValue()).getBytes();			if (b.length < 0x100) {				write(64 | 5);				writeLong(b.length, 1);			} else if (b.length < 0x10000) {				write(64 | 6);				writeLong(b.length, 2);			} else {				write(64 | 7);				writeLong(b.length, 4);			}			writeBytes(b);			break;		}		default:			throw new IOException();		}	}}

⌨️ 快捷键说明

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