java - J2ME,InputStream 在通过蓝牙接收到 40K 数据后挂断

标签 java vb.net java-me bluetooth

在通过蓝牙从 PC 向我的手机 (N73) 发送数据时,输入流似乎挂断了。 InputStream 派生自 StreamConnection。

PC 软件内置于VB.net。 在 Java ME 中移动。

InputStream 是否有在读取大块数据时需要清空的内部缓冲区? 正在以 10Kb 到 15Kb 范围的 block 接收数据,并且在接收到第 3 个 block 后停止读取。 奇怪的是,我没有收到任何异常(exception)情况。

我浏览了 InputStream 类 API 文档,找不到任何 InputStream clear 或 empty 方法。 只有一个reset()方法,不知道有什么用?

最佳答案

InputStream.reset() 是您在使用 Inpustream.mark() 强制 InputStream 创建一个内部缓冲区之后调用的方法多次读取相同的数据,假设 InputStream 通过在调用 InputStream.markSupported() 时返回 true 来支持它。

至于数据传输问题,我们讨论的是在 Symbian OS 9.1 上运行 Series60 第三版的手机。考虑到 JSR-82 的 Symbian 测试有多广泛,像 InputStream 上的 40k 限制这样简单的实现错误似乎不太可能。

如果服务器以低得多的比特率发送较小的数据 block ,手机的行为会发生变化吗?
手机在读取更多数据之前是否处理接收到的数据?
MIDlet 还做什么?即使在蓝牙 InputStream 阻塞之后,其他一切是否都按预期工作?

我确实记得 JSR-82 实现中的一个相当重要的错误,它可能只有在创建初始 N73 固件后才被修复:在任何事件调度线程中根本不使用蓝牙(不是来自 之类的任何方法) MIDlet.startApp(), Canvas.keyPressed(), CommandListener.commandAction(), PlayerListener.playerUpdate().. .).

最好只在您自己编写的 Thread.run() 方法中使用蓝牙。

关于java - J2ME,InputStream 在通过蓝牙接收到 40K 数据后挂断,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1755457/

相关文章:

java - ActionListener 非正统 Infinate Frame Java

vb.net - 通过函数传递二维数组

java - 电子邮件在 j2me lwuit 中有效

java - 从 LDAP 获取当前用户的所有组和角色

java - 在 Java 中插入 BST 时遇到问题

java - 替换字符串 Java

arrays - 将带有数组的 VB6 类型转换为 VB.NET 结构

mysql - 如何在mysql和Visual Basic中设置变量组?

java - 如何将 lush 与 j2me Polish 2.1.4 集成

安装 Blackberry 插件/SDK 后 Eclipse 随机退出