Sam*_*Sam 2 java sockets bufferedreader
我正在创建一个移动应用程序,以便在手机上运行并尝试以最有效的方式从中读取数据.应用程序将数据发送到我的服务器应用程序(以字节的形式,不一定是字符).
我不知道数据的长度; 结尾将标有3字节标记(即0x11,0x22,0x33),然后将发送一组新数据.很可能会在每组"数据集"中发送大量数据.我想知道,读取这些数据最有效的方法是什么.我应该用InputStreamReader吗?BufferedReader?显然,我需要检查每个字符以查看它是否是标记的一部分,如果是,则将标记之前的所有数据发送到另一个方法进行处理.
从我所知道的,如果我的结束标记是一个(显然,情况并非如此),BufferedReader.readLine()那就是我想要的.我是否需要编写自己的方法来逐字节读取并查找我的标记?(我也不知道这是否是最有效的方式?)\nBufferedReader
假设您的数据是字节数据而不是字符数据,您应该将套接字输入流包装在a中BufferedInputStream,并使用它来一次读取一个字节的数据,将字节保存在某种字节缓冲区中.(一种选择是使用a ByteArrayOutputStream来缓冲你从中读取的数据字节BufferedInputStream.)
BufferedReader而且readLine()不是要走的路:
readLine方法仅理解由'\n'和/或'\r'字符分隔的行.没有办法让它理解其他"线"分隔符.最后,请注意,BufferedInputStream出于性能原因这一点非常重要.如果您不使用一个,并且每次从套接字InputStream读取一个字节,由于Java应用程序执行的系统调用次数,您可能会受到严重的性能影响.