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 };
再附上十六进制与字符串相互转换代码
public static String bytesToHexString(byte[] src) {
StringBuilder stringBuilder = new StringBuilder("");
if (src == null || src.length <= 0) {
return null;
}
for (int i = 0; i < src.length; i++) {
int v = src[i] & 0xFF;
String hv = Integer.toHexString(v);
if (hv.length() < 2) {
stringBuilder.append(0);
}
stringBuilder.append(hv);
}
return stringBuilder.toString();
} public static String BytesHexString(byte[] b) {
String ret = "";
for (int i = 0; i < b.length; i++) {
String hex = Integer.toHexString(b[i] & 0xFF);
if (hex.length() == 1) {
hex = '0' + hex;
}
ret += hex.toUpperCase();
}
return ret;
}
还遇到了一个问题, 再inputstream流里读出传感器过来的数据,第一想法是while(is.readline())。但是程序总是被readline阻塞掉,我的解决办法是下面这种。dis是dataInputstream对象
while (dis.read(bytes) != -1) {
if (dis.available() == 0) { break;
}
}
读取多个字节时,InputStream.available()方法,这个方法可以在读写操作前先得知数据流里有多少个字节可以读取。需要注意的是,如果这个方法用在从本地文件读取数据时,一般不会遇到问题,但如果是用于网络操作,就经常会遇到一些麻烦。比如字符读少了之类。
今天就写到这,明天写java http发送请求和java和php直接的加密传输
结尾的情诗叫,《我愿意是激流》。
我愿意是激流 ,是山里的小河,在崎岖的路上,在岩石上经过。
只要我的爱人,是一条小鱼,在我的浪花中,快乐的游来游去。
我愿意是荒林,在河流的两岸,面对一阵阵狂风,我勇敢地作战。
只要我的爱人,是一只小鸟,在我的稠密的树枝间作客鸣叫。
我愿意是废墟,在峻峭的山崖,这静默的毁灭,并不使我懊丧。
只要我的爱人,是青青的长春藤,沿着我荒凉的额头,亲密的攀援而上。
我愿意是草屋,在深深的山谷底,草屋的顶上,饱受着风雨的打击。
只要我的爱人,是可爱的火焰,在我的炉子里,愉快的缓缓闪现。
我愿意是云朵,是灰色的破旗,在广漠的空中,懒懒地飘来飘去。
只要我的爱人,是珊瑚似的夕阳,傍着我苍白的脸,显出鲜艳的辉煌。
Good luck boy
我愿意是书本,在读者的手中,接受每一次翻阅,我无保留的分享。
只要我的爱人,是黑色的墨水,填满我的每一页,这就是我的全部。 from zuo.
I want to do——输入流readline阻塞问题的更多相关文章
- Android中使用BufferedReader.readline阻塞读取不到数据,但是ready返回true
通过socket测试工具在电脑上发送消息,Android真机可以收到响应BufferedReader.ready()返回true,但是readline却一直阻塞. 原因:readline()只有在遇到 ...
- java的nio之:java的bio流下实现的socket服务器同步阻塞模型和socket的伪异步的socket服务器的通信模型
同步I/O模型的弊端===>每一个线程的创建都会消耗服务端内存,当大量请求进来,会耗尽内存,导致服务宕机 伪异步I/O的弊端分析===>当对Socket的输入流进行读取操作的时候,它会一直 ...
- 记录 serverSocket socket 输入,输出流,关闭顺序,阻塞,PrintWriter的一些问题.
关于socket.getOutputStream() 的一些问题, OutputStream的flush是一个空方法,所以需要另一个实现了Flush的流来包装一下 这里为什么使用PrintWriter ...
- java readLine()
原文 虽然写IO方面的程序不多,但BufferedReader/BufferedInputStream倒是用过好几次的,原因是: 它有一个很特别的方法:readLine(),使用起来特别方便,每次读回 ...
- Java:java中BufferedReader的read()及readLine()方法的使用心得
BufferedReader的readLine()方法是阻塞式的, 如果到达流末尾, 就返回null, 但如果client的socket末经关闭就销毁, 则会产生IO异常. 正常的方法就是使用sock ...
- 关于java中BufferedReader的read()及readLine()方法的使用心得
BufferedReader的readLine()方法是阻塞式的, 如果到达流末尾, 就返回null, 但如果client的socket末经关闭就销毁, 则会产生IO异常. 正常的方法就是使用sock ...
- Java IO------------------BIO(同步阻塞)、NIO1.0(多路复用)、NIO2.0(AIO,非阻塞)
1. BIO JDK5之前, JDK的IO模式只有BIO(同步阻塞)问题: 因为阻塞的存在, 需对每个请求开启一个线程. 过多的线程切换影响操作系统性能解决: 使用线程池, 处理不过来的放入队列, 再 ...
- 被readLine()折腾了一把
虽然写IO方面的程序不多,但BufferedReader/BufferedInputStream倒是用过好几次的,原因是: 它有一个很特别的方法:readLine(),使用起来特别方便,每次读回来的都 ...
- java网络通信:同步阻塞式I/O模型(BIO)
缺点:一个线程只能处理一个客户端连接 服务端: public class TimeServer { public static void main(String[] args) throws IOEx ...
随机推荐
- Qt之QDesktopServices
简述 QDesktopServices类提供的函数用于访问常见的桌面服务. 许多桌面环境都会提供一系列服务,可以通过应用程序来执行常见任务,如:以用户应用程序首选项的方式,打开一个网页. 此类包含为服 ...
- 想做web前端project师应该学习些什么?
偶然间看到这篇文章.感觉博主写的挺不错的,假设你想做web前端project师的话,建议您阅读下面这篇文章,事实上web前端project师所做的工作事实上就是站点设计,有些小公司的美工事实上就是做w ...
- PAT(B) 101-111-1-2014-03-01
1.个位数统计: #include<stdio.h> #include<iostream> #include<string.h> #include<set&g ...
- so near yet so far
Dear little yang So beautiful boy as you, the most beautiful boy is you who i ever saw, like a sun , ...
- jsp中对话框的实现
<Input type=submit name="g" style="font-size:20px" value="提交" oncli ...
- Liunx-php7安装swoole扩展
Liunx-php7安装swoole扩展 标签(空格分隔): php 下载包 https://github.com/swoole/swoole-src/releases 安装过程 直接wget也行直接 ...
- Mac上vmware虚拟机Windows10安装JDK8及配置环境
1.jdk8下载地址:http://www.oracle.com/technetwork/java/javase/downloads/index.html 2.双击下载的jdk进行安装 3.安装成功之 ...
- bzoj2763 [JLOI]飞行路线 分层图最短路
问题描述 Alice和Bob现在要乘飞机旅行,他们选择了一家相对便宜的航空公司.该航空公司一共在n个城市设有业务,设这些城市分别标记为0到n-1,一共有m种航线,每种航线连接两个城市,并且航线有一定的 ...
- numpy中list array matrix比较
用python中的numpy包的时候不小心踩了array和matrix的大坑,又引申一下比较list array matrix之间的异同.数据结构(Data Structures)基本上人如其名——它 ...
- caioj 1073 动态规划入门(三维一边推:最长公共子序列加强版(三串LCS))
三维的与二维大同小异,看代码. #include<cstdio> #include<cstring> #include<algorithm> #define REP ...