你是想a
123.45
234.5
234.57
单独读?好像java里不能实现!而且你的字符串是连起来的.
即使是c/c++也难实现.
你可以把读出来的一行然后按照","划分出数组

解决方案 »

  1.   

    看看这样行不行(没试验过):
    发送:
    for (int i = 0; i < data.size(); i++) {
       out.write(data.elementAt(i).toString().getBytes());
       out.flush();
       sleep(100);
    }
    接受:
    for (;;) {
      byte[] readBuffer = new byte[255];
      in.read(readBuffer);
      reData = new String(readBuffer);
      <do some process>
    }
    就是每一行刷一次
      

  2.   

    to  xitianjile(西天) 是读一行,如: a 123.45,234.5,234.57,456.43to  cfsego(陈传文) 我试试看。
      

  3.   

    java里面好像不能设置特殊点读的.
      

  4.   


     cfsego(陈传文)的方法不行。
    那有什么方法可以实现呢?大家可以做做。
      

  5.   

    a 123.45,234.5,234.57,456.43&我每行加个&结束符发送也是没用的。因为我读的时候没有办法让它就读到这个标志符这里。
      

  6.   

    不需要按结束符读取的,楼主原来的接收方法不需要改变,只需对每次接收到的reData进行一些处理即可,楼主可以试试这个算法:
        String rest = "";//用于暂存一条不全的记录
        String aLine;    //用于暂存一条完全的记录
        String[] datas = reData.split('&');//按结束符将reData分割为字符串数组
        for(i = 0; i < datas.length; i ++) {//循环这个数组
            if (i == 0) {                   //如果是第一次循环
                if (rest != null && !rest.equals("")) {//上次接收时留有一条不全的记录
                    aLine = rest + datas.[0];//和这次的部分拼接成完整的
                    ...                     //其它处理
                }
                else {                      //否则
                    aLine = datas[0];       //直接取到一条完整的记录
                    ...                     //其它处理
                }
            }
            else if (i == datas.length - 1) {//如果是最后一次循环
                rest = datas[i];             //当作不全的记录暂存起来
            }
            else {                           //其它循环
                aLine = datas[i];            //都直接取完整的记录
                ...                          //其它处理
            }
        }注意此算法可能有些边界问题需要完善
      

  7.   

    for (int i = 0; i < data.size(); i++) {
       out.write(data.elementAt(i).toString().getBytes());
       out.write("\n");
       sleep(100);
    }
    接受:
    for (;;) {
      byte[] readBuffer = new byte[255];
      in.readLine(readBuffer);  //就是读一行
      reData = new String(readBuffer);
      <do some process>
    }
      

  8.   

    不用sleep了
    这个思路可行
    我以前看到一个加行号的程序,大概是这么写的
    我们的设计程序的思路应该是
    怎么简单高效怎么写
      

  9.   

    为什么要既写入又读出呢?
    对于String的操作可以用
    DataInputStream和DataOutputStream来实现,
    dis.readUTF();
    dos.writeUTF(test[i]);
      

  10.   

    以上各位的方法都不行。
    to wjsfr(令狐葱) 用dos.writeUTF(test[i]);只能发送一部分数据,如果达到1000多条的话就发不出去,不信你试试看。
    to cfsego(陈传文) 我用的是j2se的缩小版本,in.readLine(readBuffer); 在in里面没有readLine()这个方法。
      

  11.   

    回复人: cfsego(陈传文) 
    这就行呀!
    for (int i = 0; i < data.size(); i++) {
       out.write(data.elementAt(i).toString().getBytes());
       out.write("\n");
       sleep(100);
    }
    接受:
    for (;;) {
      byte[] readBuffer = new byte[255];
      in.readLine(readBuffer);  //就是读一行
      reData = new String(readBuffer);
      <do some process>
    }
      

  12.   

    to cfsego(陈传文) 我用的是j2se的缩小版本,in.readLine(readBuffer); 在in里面没有readLine()这个方法。
      

  13.   

    你自己好好看看api的文档,肯定能搞定的,我用j2me搞过这样的东西,假设readUTF或者writeUTF会阻赛,肯定是程序出了问题,而不是100次还是1000次的问题
      

  14.   

    按行的话试试PrintWriter(有个构造函数可以自动flush的,第二个参数选true)和BufferedReader对应
    println发送
    readLine接受
      

  15.   

    byte buffer=new byte[1024];
    read = in.read(buffer)
    如果我读进来的buffer没有达到1024b,那我程序一直在等到读到有1024b才结束,请问有没有什么方法可以解决这个问题?
      

  16.   

    不用读到buffer中
    int c=0;
    while((c=in.read())!=0)呢?
      

  17.   

    嘿嘿,你用缓冲区怕阻塞得话可以试试java.nio.*中的api
    他们可以实现non-blocking mode
      

  18.   

    Read a line of text.  A line is considered to be terminated by any one of a line feed ('\n'), a carriage return ('\r'), or a carriage return followed immediately by a linefeed.自己写一个撒.....给个例子,这里我们是\r后面一定跟\n的,你可以改一下.或者你可以参考下BufferedReader.readLine()源码.private String readLine(PushbackInputStream ins, String encoding) throws
          Exception {
        int i,j=0;
        
        byte[] b = new byte[1];
        byte[] b2 = new byte[512];
        StringBuffer buffer = new StringBuffer("");
        
        while (true) {
          i = ins.read();
          b[0] = (byte) i;
          b2[j] = b[0];
          j++;
          if (b[0] == '\r') {
            i = ins.read();
            b[0] = (byte) i;
            b2[j] = b[0];
            if (b[0] != '\n') {
              System.out.println("impossible error in multiformparser.readline, the \r is not followed by an \n");
              return null;
            }
            break;
          }
          buffer.append(new String(b, encoding));
        }
        String aa = new String(b2,0,j-1,encoding);
        return aa;
      }