zoukankan      html  css  js  c++  java
  • 客户端与服务器之间通信收不到信息——readLine()

       写服务器端和客户端之间通信,结果一直读取不到信息,在https://blog.csdn.net/yiluxiangqian7715/article/details/50173573

     上找到了原因:使用BufferedReaderreadLine()方法来读取信息,但是没有遇见行结束符“ ”,“ ”或“ ”还是会继续读取(即阻塞了),所以要想读取到信息,只需要在写入的时候加上行结束符。

       BufferedReaderreadLine方法源码如下:

        /**
         * Reads a line of text.  A line is considered to be terminated by any one
         * of a line feed ('
    '), a carriage return ('
    '), or a carriage return
         * followed immediately by a linefeed.
         *
         * @return     A String containing the contents of the line, not including
         *             any line-termination characters, or null if the end of the
         *             stream has been reached
         *
         * @exception  IOException  If an I/O error occurs
         *
         * @see java.nio.file.Files#readAllLines
         */
        public String readLine() throws IOException {
            return readLine(false);
        }

      类似的还有RandomAccessFile的readLine():

        /**
         * Reads the next line of text from this file.  This method successively
         * reads bytes from the file, starting at the current file pointer,
         * until it reaches a line terminator or the end
         * of the file.  Each byte is converted into a character by taking the
         * byte's value for the lower eight bits of the character and setting the
         * high eight bits of the character to zero.  This method does not,
         * therefore, support the full Unicode character set.
         *
         * <p> A line of text is terminated by a carriage-return character
         * ({@code 'u005Cr'}), a newline character ({@code 'u005Cn'}), a
         * carriage-return character immediately followed by a newline character,
         * or the end of the file.  Line-terminating characters are discarded and
         * are not included as part of the string returned.
         *
         * <p> This method blocks until a newline character is read, a carriage
         * return and the byte following it are read (to see if it is a newline),
         * the end of the file is reached, or an exception is thrown.
         *
         * @return     the next line of text from this file, or null if end
         *             of file is encountered before even one byte is read.
         * @exception  IOException  if an I/O error occurs.
         */
    
        public final String readLine() throws IOException {
            StringBuffer input = new StringBuffer();
            int c = -1;
            boolean eol = false;
    
            while (!eol) {
                switch (c = read()) {
                case -1:
                case '
    ':
                    eol = true;
                    break;
                case '
    ':
                    eol = true;
                    long cur = getFilePointer();
                    if ((read()) != '
    ') {
                        seek(cur);
                    }
                    break;
                default:
                    input.append((char)c);
                    break;
                }
            }
    
            if ((c == -1) && (input.length() == 0)) {
                return null;
            }
            return input.toString();
        }
  • 相关阅读:
    faster with MyISAM tables than with InnoDB or NDB tables
    w-BIG TABLE 1-toSMALLtable @-toMEMORY
    Indexing and Hashing
    MEMORY Storage Engine MEMORY Tables TEMPORARY TABLE max_heap_table_size
    controlling the variance of request response times and not just worrying about maximizing queries per second
    Variance
    Population Mean
    12.162s 1805.867s
    situations where MyISAM will be faster than InnoDB
    1920.154s 0.309s 30817
  • 原文地址:https://www.cnblogs.com/datamining-bio/p/10465631.html
Copyright © 2011-2022 走看看