通过蓝牙将数据从PC发送到我的手机(N73)时,输入流似乎挂断了。InputStream由StreamConnection派生而来。
上位机软件是用VB.net构建的。Java ME中的Mobile。
在读取大量数据时,InputStream是否有需要清空的内部缓冲区?正在接收10Kb到15Kb范围的区块中的数据,在接收到第三个区块后停止读取。奇怪的是,我没有收到任何异常。
我浏览了InputStream类的API文档,找不到任何InputStream clear或空方法。只有一个reset()方法,我不知道它是用来做什么的?
发布于 2009-11-18 22:01:49
InputStream.reset()是在使用Inpustream.mark()强制InputStream创建允许您多次读取相同数据的内部缓冲区后调用的方法,假设InputStream通过在调用InputStream.markSupported()时返回true来支持它。
至于数据传输问题,我们讨论的是一款基于Symbian OS9.1的Series60第三版手机。考虑到Symbian对JSR-82的广泛测试,在InputStream上出现像40k这样简单的实现错误似乎是不太可能的。
如果服务器以更低的比特率发送更小的数据块,手机的行为会发生变化吗?
在读取更多数据之前,手机是否会处理接收到的数据?
MIDlet还在做什么?即使在蓝牙InputStream块之后,其他一切也能正常工作吗?
我确实记得JSR-82实现中的一个相当重要的错误,它可能只有在最初的N73固件创建之后才能修复:在任何情况下都不要使用蓝牙分派线程(不是通过任何方法,如MIDlet.startApp()、Canvas.keyPressed()、CommandListener.commandAction()、PlayerListener.playerUpdate()...)。
您最好只在自己编写的Thread.run()方法中使用蓝牙。
https://stackoverflow.com/questions/1755457
复制相似问题