为什么客户端发的文字服务端收不到?哪里错了?求指点下面是客户端
public class TCPClient {
  public static void main(String[] args){
  try{
     Socket s=new Socket("127.0.0.1",6668);
     BufferedWriter bw=new BufferedWriter(new OutputStreamWriter(s.getOutputStream()));
     BufferedReader brk=new BufferedReader(new InputStreamReader(System.in));
     //BufferedReader br=new BufferedReader(new InputStreamReader(s.getInputStream()));
     String str="";
do{
str=brk.readLine();
System.out.println("客户:"+str);
    bw.write(str);
bw.flush();
}while(!str.equals("bye"));
         //br.close();
         bw.close();
         s.close();
  }catch(Exception e){
  e.printStackTrace();
  }
  }
}下面是服务端
public class TestTCPServer {
public static void main(String[] args) { try {
ServerSocket ss = new ServerSocket(6668);
Socket s = ss.accept();
System.out.println("有一个客户端连接上来了!!~·");
                BufferedReader br=new BufferedReader(new InputStreamReader(s.getInputStream()));
//BufferedReader brk=new BufferedReader(new InputStreamReader(System.in));
//BufferedWriter bw=new BufferedWriter(new OutputStreamWriter(s.getOutputStream()));
String str="";
do{
str=br.readLine();
System.out.println("客户:"+str);
}while(!str.equals("bye"));
                br.close();
                //bw.close();
                s.close();
                ss.close(); } catch (IOException e) {
e.printStackTrace();
}
}
}

解决方案 »

  1.   

    服务端在str=br.readLine()处阻塞;因为客户端只发送了输入的文字(不带换行符),没发送换行符,readline方法认为一行还没结束,会一直等换行符。应该改客户端的发送部分:
     bw.write(str);
     bw.newLine();//发送换行
     bw.flush();
      

  2.   

    3q3q3q非常感谢了,学习了
    ,老师还没教,自己在自学中,苦逼中..
      

  3.   

    3q3q3q非常感谢了,学习了
    ,老师还没教,自己在自学中,苦逼中..
    =========================================
    慢慢来吧,socket以后你是否用到也不好说,如果想学可以自己写socket服务器,
    如果想稳定的用在项目,可以看一下apache mina框架。开源的。