一个蛮邪门的问题 有关socket客户端接受服务器端的回复的问题

yanjichaoo 2011-08-11 09:20:12
客户端向服务器发送一句话 服务器端会自动回复一句话 问题出现了 代码大概如下
socket=new Socket(Config.SERVER_HOST,Config.SERVER_PORT);bufferedReader=new BufferedReader(new InputStreamReader(socket.getInputStream()));private void handleEcho(){
while(!isFinish){
System.out.println("1");
String echo="";

System.out.println("2");
try {
System.out.println(bufferedReader.readLine()+"###");
} catch (IOException e) {
System.out.println("%%%%%%%");
e.printStackTrace();
}
System.out.println(echo+"@@");
if(Config.BYE.equalsIgnoreCase(echo)){
showResponse(echo);
}else{
showResponse("Got "+echo);
}

}
}


前面获取bufferedReader都没有问题 问题出现在这一行System.out.println(bufferedReader.readLine()+"###");
只要执行bufferedReader.readLine()这一句 就会出现下面代码不再执行 方法直接跳过的问题 而且没有异常 甚至警告也没有 有点迷茫 代码还能跳过执行吗?
...全文
93 11 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
fontlose 2011-08-11
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 yanjichaoo 的回复:]
不管他出不出错 为什么下面的不执行呢?
[/Quote]
你用的是阻塞的读方法.
yuhan963 2011-08-11
  • 打赏
  • 举报
回复
应该不是执行,而是bufferedReader.readLine()等在那里了,程序阻塞,还没往下走呢
yanjichaoo 2011-08-11
  • 打赏
  • 举报
回复
不管他出不出错 为什么下面的不执行呢?
fontlose 2011-08-11
  • 打赏
  • 举报
回复
你用的是阻塞的读方法 收到带回车的数据或断开才会返回或异常 或可以设置不阻塞设置读超时setSoTimeout(timeout)
儿大不由爷 2011-08-11
  • 打赏
  • 举报
回复
Logcat出什么信息啊
yanjichaoo 2011-08-11
  • 打赏
  • 举报
回复
找到错了 服务器端用的是print方法 。。。。。改成println 已经好使了
fontlose 2011-08-11
  • 打赏
  • 举报
回复
你用的是readLine服务器发回来要带回车符号#13才行
yanjichaoo 2011-08-11
  • 打赏
  • 举报
回复
。。。。我找到异常了 一行一行找的 竟然是D里面打出来的 服了。。。。异常时协议不支持地址族
我现在客户端能向服务器发 服务器能收 并且能发回来 但是客户端收不到 应该不是我IP端口的问题才对啊
hnwhh 2011-08-11
  • 打赏
  • 举报
回复
很奇怪的问题,关注一下
fontlose 2011-08-11
  • 打赏
  • 举报
回复
正常的话你没setSoTimeout读是阻塞的,IOException 改成 Exception 是不是异常被上一级捕捉了
yanjichaoo 2011-08-11
  • 打赏
  • 举报
回复
经测试 不是阻塞 而是直接跳过下面的代码 也就是说这个方法执行到这行之后就结束了 然后执行别的方法了

80,472

社区成员

发帖
与我相关
我的任务
社区描述
移动平台 Android
androidandroid-studioandroidx 技术论坛(原bbs)
社区管理员
  • Android
  • yechaoa
  • 失落夏天
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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