Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/github/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java J2ME,通过蓝牙接收40K数据后InputStream挂断_Java_Vb.net_Java Me_Bluetooth - Fatal编程技术网

Java J2ME,通过蓝牙接收40K数据后InputStream挂断

Java J2ME,通过蓝牙接收40K数据后InputStream挂断,java,vb.net,java-me,bluetooth,Java,Vb.net,Java Me,Bluetooth,通过蓝牙从PC向我的手机(N73)发送数据时,输入流似乎挂断了。 InputStream是从StreamConnection派生的 PC机软件是在VB.net中构建的。 javame中的Mobile InputStream是否有在读取大块数据时需要清空的内部缓冲区? 正在以10Kb到15Kb范围的数据块接收数据,并且在接收到第三个数据块后,读取停止。 奇怪的是,我没有收到任何例外 我浏览了InputStream类API文档,没有找到任何InputStream clear或empty方法。 只有一

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

PC机软件是在VB.net中构建的。 javame中的Mobile

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

我浏览了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限制这样简单的实现错误似乎不太可能出现

如果服务器以更低的比特率发送较小的数据块,手机行为是否会改变?
手机是否在读取更多数据之前处理接收到的数据?
侏儒还在做什么?即使在蓝牙输入流阻塞后,其他所有功能是否仍能正常工作?

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


您最好只在自己编写的
线程内部使用蓝牙。run()
方法。

您如何读取数据?(例如,您正在调用哪个“read”方法?)read(字节[]b,int off,int len)我没有尝试以较低的比特率发送较小的数据块?我怎么控制手机的蓝牙比特率呢?我想我还没有启用这个设置,不管它是什么,它现在默认运行?这似乎是一个重要的问题。手机只是将所有数据块存储在向量的不同插槽中,每个插槽都是一个字节数组。此时的Midlet只是读取输入流(第一个线程),写入输出流(第二个线程)并绘制画布(第三个线程)。我在网上找到了安德烈·克林斯海姆(Andre Klingsheim)的一份名为“J2ME蓝牙编程”的重要PDF文件。在蓝牙陷阱类别中,他指出:“还必须注意一次发送的数据量。6600和P900智能手机中使用的一个缓冲区似乎是512字节。当一次尝试传输超过512字节时,接收器会获得512字节,然后连接将冻结。发送512字节,刷新,返回1字节,刷新工作正常。然后,该连接保持活动状态。“这是“在MIDlet中使用蓝牙串行端口”中报告的已知问题吗“在诺基亚wiki KIJ000109概述中,在某些诺基亚S60和80系列设备中,读取传入流无法正常工作。S60第二版:诺基亚6600 v.4.09.1 S60第二版,功能包1:诺基亚6620、诺基亚6260、诺基亚6670、诺基亚7610系列80第二版:诺基亚9300、诺基亚9500此文档的日期似乎是2004年。他们现在肯定已经解决了这个问题。我当然希望缓冲区问题在最近的手机中得到了解决,但请记住,即使您的N73比您所引用的所有手机都好一个数量级,它也可能已经使用了3年以上。有关stdout和stderr,请参阅