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