我目前正在Blackberry上编写一个应用程序来简单地发送和接收一些原始数据到我网络上的另一个基于TCP的设备.我在Blackberry模拟器中遇到同样的问题,MDS模拟器运行并使用物理电话与我公司的MDS服务器通信.请注意,直接使用wifi而不是通过MDS时不会发生此问题.
问题是InputStream上的available()函数返回零,除非我先调用read().如果我先调用read(知道有一些数据可用..谢谢wireshark),数据会回来,随后对available()的调用会指示我没有读取的数据.问题是我并不总是能保证数据会存在,所以我可以阻止.是否有人意识到这一点,这是一个问题或设计的东西?
是否有人知道一种方法来测试read()方法是否会在调用它们之前阻止它们可用?
这基本上就是我在做什么:
SocketConnection s = (SocketConnection)Connector.open("socket://1.2.3.4:port;deviceside=false", Connector.READ_WRITE);
OutputStream o = ((StreamConnection)s).openOutputStream();
InputStream i = ((StreamConnection)s).openInputStream();
o.write("hello");
Thread.sleep(sometime);
if (i.available() > 0) {
byte[] data = new data[10];
int bytesRead = i.read(data);
System.out.println("Read [" + new String(data) + "] (bytes = " + bytesRead + ")");
}
我必须评论if条件是否有效.
我遇到了安装JDE 4.5.0的MDS-CS模拟器的问题.我必须建立网络连接,我需要为此运行MDS.每当我启动MDS模拟器时,都会出现一个窗口并立即退出.
我该如何解决这个问题?
我在互联网上搜索这个问题,大多数答案都与路径环境变量有关.我检查了正确的路径变量,但仍然无法正常工作.我重新安装了JDE,仍然没有解决方案.
我的Java家就在 C:\Program Files\Java\jdk1.6.0_12
这会有关系吗?