通过PC从蓝牙向我的手机(N73)发送数据时,输入流似乎挂断了.
InputStream派生自StreamConnection.
PC软件内置在VB.net中.
Java ME中的移动设备.
InputStream是否具有读取大块数据时需要清空的内部缓冲区?
数据以10Kb至15Kb的范围内的块接收,并且在接收到第三个块后停止读取.
奇怪的是我没有收到任何例外.
我浏览了InputStream类API文档,但找不到任何InputStream清除或空方法.
只有一个reset()方法,我不知道它的用途是什么?
解决方法:
InputStream.reset()是一种使用Inpustream.mark()强制InputStream创建内部缓冲区的时间,您可以在某个时间调用该方法,该缓冲区允许您多次读取相同的数据,假设InputStream通过在以下情况下返回true来支持该数据调用InputStream.markSupported().
至于数据传输问题,我们谈论的是在Symbian OS 9.1之上运行Series60 3rd Edition的手机.考虑到Symbian对JSR-82进行的测试非常广泛,因此似乎不太可能实现像InputStream上限制40k这样简单的实现错误.
如果服务器以低得多的比特率发送较小的数据块,手机的行为是否会改变?
手机会在读取更多数据之前处理收到的数据吗?
MIDlet还在做什么?蓝牙InputStream阻塞后,其他所有功能是否仍按预期工作?
我确实记得JSR-82实现中的一个相当重要的错误,该错误可能仅在创建初始N73固件后才得到修复:在任何事件分派线程中都不要使用蓝牙(不要从诸如MIDlet.startApp()之类的任何方法中使用蓝牙, Canvas.keyPressed(),CommandListener.commandAction(),PlayerListener.playerUpdate()…).
您最好只在自己编写的Thread.run()方法中使用蓝牙.