【发布时间】:2014-11-13 17:06:30
【问题描述】:
我正在尝试使用 2 种方法通过蓝牙套接字从 InputStream 读取数据。
第一个是:
InputStream inputStream = bluetoothSocket.getInputStream();
byte[] buffer = new byte[1024];
inputStream.read(buffer);
String clientString = new String(buffer, "UTF-8");
这个问题是现在在clientString 中,原始消息加上“0”直到缓冲区已满(如果我将使用第一个字节作为指示符,我可以知道消息的长度,但我尝试不要)。
第二个是(使用Apache Commons IO中的IOUtils类):
InputStream inputStream = bluetoothSocket.getInputStream();
StringWriter writer = new StringWriter();
IOUtils.copy(inputStream, writer, "UTF-8");
String clientString = writer.toString();
这个问题是它停留在copy 线上并且永远不会超过这一点。
那么,我的问题是,这些方法之间有什么不同,为什么我会得到不同的结果?
客户端的代码是(C# Using 32feet):
client.Connect(BluetoothEndPoint(device.DeviceAddress, mUUID));
bluetoothStream = client.GetStream();
if (client.Connected == true && bluetoothStream != null)
{
byte[] msg = System.Text.Encoding.UTF8.GetBytes(buffer + "\n");
bluetoothStream.Write(msg, 0, msg.Length);
bluetoothStream.Flush();
}
【问题讨论】:
标签: java android sockets bluetooth