J2ME 连接SOCKET 的问题。

寒冰意志 2009-09-11 12:12:22
sc = (SocketConnection) Connector.open("socket://ip地址:10000");
is = sc.openInputStream();
os = sc.openOutputStream();
//发送信息
StringBuffer sb = new StringBuffer();
sb.append("这里是一些登陆的信息");
byte[] bb = sb.toString().getBytes();
os.write(bb);
os.flush();
//取得信息
int len = 0;
while (len == 0) {
len = is.available();
}
byte[] b = new byte[len];
is.read(b);

//第二次 发送信息
StringBuffer sb2 = new StringBuffer();
sb2.append("这里是刚刚从服务器取得的信息");
byte[] bb2 = sb2.toString().getBytes();
os.write(bb2);
os.flush();
//第二次, 取得服务器信息
int len = 0;
while (len == 0) {
len = is.available();
}
byte[] b = new byte[len];
is.read(b);

第二次 就出错了。有人帮忙看一下是哪里的问题吗。 本人初次接触SOCKET 多有不懂的地方。 先谢谢了。


...全文
98 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
寒冰意志 2009-09-11
  • 打赏
  • 举报
回复
第二次,不是出错了 是一直在第二次取服务器数据的信息 循环。

while (len == 0) {
len = is.available();
}
也就是说 第二次is.available() 一直是0 。
xw0312 2009-09-11
  • 打赏
  • 举报
回复
是os.flush()吧,这个当然做了。代码上经过研究没啥问题,我怀疑是不是跟手机有关,一直在网上找相应的帖子,暂时还没有有用的。楼主如果解决了这个问题麻烦告诉一声。
寒冰意志 2009-09-11
  • 打赏
  • 举报
回复
在手机上不行你尝试一下 os.flash();
xw0312 2009-09-11
  • 打赏
  • 举报
回复
我的问题和楼主一样,在同一个socket里2次发送接收数据,第二次发送的服务器收不到。服务器端打印socket timeout,返回-1。不知道你的服务器打印什么信息。
我的客户端代码没有关闭socket和流,但是服务器发送完第一次数据后,过段时间就开始超时,然后retry。从代码上看我的第二次数据确实是发送了,但是服务器就是没收到,然后才判断超时。可能使这个原因,因为我现在还不确定这个返回的-1到底是什么引起的。同时我的程序在模拟器上是好的,但是手机上不行。
寒冰意志 2009-09-11
  • 打赏
  • 举报
回复
是有返回的,但是
while (len == 0) {
len = is.available();
}
这样一直取不到。
zhlwwj1314 2009-09-11
  • 打赏
  • 举报
回复
第2次请求,服务器是否有返回?

13,100

社区成员

发帖
与我相关
我的任务
社区描述
Java J2ME
社区管理员
  • J2ME社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧