需要调用很多次readLine()才能接收完,而且次数是不确定。
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~`
我觉得用readLine很正常啊,用个循环读,又不麻烦,何必这么费事替换呢?

解决方案 »

  1.   

    你一行行读JTextArea的内容,一行行发不就行了...
    或者通过DataOutputStream封装Socket的输出流,
    DataOutputStream out=new DataOutputStream(new OutputStreamWriter(socekt.getOutputStream()));
    然后out.writeUTF(str);
    一次性发出,客户端用DataInputStream封装Socket的输入流,读入
    DataInputStream out=new DataInputStream(new InputStreamWriter(socekt.getInputStream()));
    in.readUTF();
      

  2.   

    while((line=in.readLine())!==null) {
                  
                  读入;
          }对方发送完了,就会结束这个循环.
      

  3.   

    如果发送方执行下面几个步骤:println(name); //这里的name是JTextField组件中输入的内容
    println(explian); //这里的explian变量是JTextArea组件中输入的内容,其中可能含有多个回车
    println(email);  //这里的email是JTextField组件中输入的内容   我在接收方执行:
    String name=readLin();
    String explian=readLine();
    String email=readLine();//如果JTextArea组件中含有多个回车,那么收到的Email绝对就不会是发送方中的println(email)中的那个email的值System.out.println("接收到的email:" + email); 
      

  4.   

    同意  xjuniper() 的方法用while循环
      

  5.   

    呵呵用while循环的话,String explian=readLine();
    String email=readLine();你根本就不知道explian和email的内容是什么了?:)
      

  6.   

    你根本就不知道explian和email的内容是什么了?:)具体内容的话当然要你自己去解析的,你可以自己定个协议,每次收到文本就可以知道是什么内容啦
    Socket通讯的话,肯定是要不停循环去读的,因为你不知道数据什么时候来
      

  7.   

    已经有协议了,发送是有顺序的:println(name); //这里的name是JTextField组件中输入的内容
    println(explian); //这里的explian变量是JTextArea组件中输入的内容,其中可能含有多个回车
    println(email);  //这里的email是JTextField组件中输入的内容   发送方
    第一次发送的是:name
    第二次发送的是explian
    第三次发送的是email接收方根据发送方发送的顺序依次接收:String name=readLine();
    String explain=readLine();
    String email=readLine();关键的问题是如果在
    explain中有多个回车,那么就会打乱了接收的内容。
    所以,我以前都是在发送方执行替换:
    println(explian.replaceAll("\n","!@#$&"));然后在接收方:
    String explain=readLine().replaceAll("!@#$&","\n"); //再替换回来
      

  8.   

    readLine()方法可以识别换行,回车等行分隔符.但不能识别通过line.seperator设置的其他分隔符.
    可以在每发送完一个内容后用line.seperator设置分隔符,这样readLine()会返回null.
      

  9.   

    直接发,无需编码,收的时侯不用readLine,用read(byte[] array)
      

  10.   

    今天一个朋友告诉我:将explain中的'\n'替换成 '\\n'不知道这样行不行,我来试一下。