I want to do——输入流readline阻塞问题

Posted ZzUuOo666

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了I want to do——输入流readline阻塞问题相关的知识,希望对你有一定的参考价值。

  据悉,外界对程序员的印象不是木讷就是死板,不是最笨就是不爱说话,不是宅就是闷骚。昨天我们老左批评我说,自从你写了程序了,你以前的优点都退化了。放在去年,我还觉得我没什么啊,程序员就是这样啊,那是因为我专注,我热爱,我就要做一个程序员。

但现在不那么想了,程序员就不能有很好的与人沟通的能力了?程序员就不能有强壮的体魄了?程序员就必须丢掉自己的开朗吗?这些真的都不属于程序员了吗?那些都是我的借口,是我自己以程序员自居,包庇了自己。那些木讷的不懂说话的是不够优秀的程序员(不包括爱因斯垣那种程序员奥)。

 

 

  继续说上一次的小程序,对于我上层应用写多了,对字符字节16进制网络传输那些偏底层的知识了解的很少。传感器客户端要接收的是通过串口转网口的16进制的一串命令“"0C 03 00 2A 00 0C 65 1”。

  // private String commond="0C 03 00 2A 00 0C 65 1A";我这种蠢到家的想法,拿字符串往传感器里write。

  正确的打开方式应该是,byte[] commondTyte = { 0x0C, 0x03, 0x00, 0x2A,0x00, 0x16, (byte) 0xE4, (byte) 0xD1 };

  再附上十六进制与字符串相互转换代码

  

 1 public static String bytesToHexString(byte[] src) {
 2             StringBuilder stringBuilder = new StringBuilder("");
 3             if (src == null || src.length <= 0) {
 4                 return null;
 5             }
 6             for (int i = 0; i < src.length; i++) {
 7                 int v = src[i] & 0xFF;
 8                 String hv = Integer.toHexString(v);
 9                 if (hv.length() < 2) {
10                     stringBuilder.append(0);
11                 }
12                 stringBuilder.append(hv);
13             }
14             return stringBuilder.toString();
15         }
16 
17         public static String BytesHexString(byte[] b) {
18             String ret = "";
19             for (int i = 0; i < b.length; i++) {
20                 String hex = Integer.toHexString(b[i] & 0xFF);
21                 if (hex.length() == 1) {
22                     hex = ‘0‘ + hex;
23                 }
24                 ret += hex.toUpperCase();
25             }
26             return ret;
27         }

还遇到了一个问题, 再inputstream流里读出传感器过来的数据,第一想法是while(is.readline())。但是程序总是被readline阻塞掉,我的解决办法是下面这种。dis是dataInputstream对象

1      while (dis.read(bytes) != -1) {
2             if (dis.available() == 0) { 
3                    
4                 break;
5             }
6       }

读取多个字节时,InputStream.available()方法,这个方法可以在读写操作前先得知数据流里有多少个字节可以读取。需要注意的是,如果这个方法用在从本地文件读取数据时,一般不会遇到问题,但如果是用于网络操作,就经常会遇到一些麻烦。比如字符读少了之类。

今天就写到这,明天写java http发送请求和java和php直接的加密传输

 

 

结尾的情诗叫,《我愿意是激流》。

我愿意是激流 ,是山里的小河,在崎岖的路上,在岩石上经过。

只要我的爱人,是一条小鱼,在我的浪花中,快乐的游来游去。

我愿意是荒林,在河流的两岸,面对一阵阵狂风,我勇敢地作战。

只要我的爱人,是一只小鸟,在我的稠密的树枝间作客鸣叫。

我愿意是废墟,在峻峭的山崖,这静默的毁灭,并不使我懊丧。

只要我的爱人,是青青的长春藤,沿着我荒凉的额头,亲密的攀援而上。

我愿意是草屋,在深深的山谷底,草屋的顶上,饱受着风雨的打击。

只要我的爱人,是可爱的火焰,在我的炉子里,愉快的缓缓闪现。

我愿意是云朵,是灰色的破旗,在广漠的空中,懒懒地飘来飘去。

只要我的爱人,是珊瑚似的夕阳,傍着我苍白的脸,显出鲜艳的辉煌。

 

今晚加未来女微信,祝我好运。下面是我写。

我愿意是书本,在读者的手中,接受每一次翻阅,我无保留的分享。

只要我的爱人,是黑色的墨水,填满我的每一页,这就是我的全部。

 

以上是关于I want to do——输入流readline阻塞问题的主要内容,如果未能解决你的问题,请参考以下文章

音乐欣赏《I Do What I Want》 - Missio

Who do you want to be bad? (谁会是坏人?)人工智能机器小爱的问话

what yang wanted to do when he got out of the spaceship was___ the joy with all the chinese 分析

I want to try to improve myself from today

Codeforce 810C Do you want a date?

What do you want from me