客户端向服务器发送一句话   服务器端会自动回复一句话   问题出现了  代码大概如下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()这一句 就会出现下面代码不再执行  方法直接跳过的问题  而且没有异常  甚至警告也没有  有点迷茫  代码还能跳过执行吗?

解决方案 »

  1.   

    你用的是阻塞的读方法 收到带回车的数据或断开才会返回或异常  或可以设置不阻塞设置读超时setSoTimeout(timeout)
      

  2.   

    应该不是执行,而是bufferedReader.readLine()等在那里了,程序阻塞,还没往下走呢
      

  3.   

    正常的话你没setSoTimeout读是阻塞的,IOException 改成 Exception 是不是异常被上一级捕捉了
      

  4.   

    。我找到异常了  一行一行找的  竟然是D里面打出来的  服了。异常时协议不支持地址族  
    我现在客户端能向服务器发  服务器能收  并且能发回来  但是客户端收不到  应该不是我IP端口的问题才对啊 
      

  5.   

    你用的是readLine服务器发回来要带回车符号#13才行 
      

  6.   

    找到错了  服务器端用的是print方法  。。改成println  已经好使了