java socket读字节问题

原来java socket一直都用readline解析数据,后来和硬件设备通讯才知道readline必须有\n\t,

                           OutputStream o = socket.getOutputStream();
			o.write(message.getBytes("UTF-8"));
//			out = new PrintWriter(socket.getOutputStream(), true);
//			out.println(message);//发送命令
			InputStream isr=new BufferedInputStream(socket.getInputStream());//读传来的信息


今天又有同事遇到了这个问题,记一下

java.io
类 PrintWriter

向文本输出流打印对象的格式化表示形式。此类实现在 PrintStream 中的所有 print 方法。它不包含用于写入原始字节的方法,对于这些字节,程序应该使用未编码的字节流进行写入。

PrintStream 类不同,如果启用了自动刷新,则只有在调用 println、printf 或 format 的其中一个方法时才可能完成此操作,而不是每当正好输出换行符时才完成。这些方法使用平台自有的行分隔符概念,而不是换行符。

BufferedInputStream 为另一个输入流添加一些功能,即缓冲输入以及支持 markreset 方法的能力。在创建 BufferedInputStream 时,会创建一个内部缓冲区数组。在读取或跳过流中的字节时,可根据需要从包含的输入流再次填充该内部缓冲区,一次填充多个字节。mark 操作记录输入流中的某个点,reset 操作使得在从包含的输入流中获取新字节之前,再次读取自最后一次 mark 操作后读取的所有字节。

你可能感兴趣的:(java,socket,平台,通讯)