本文主要是介绍Socket.getInputStream() 阻塞,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
基于 httpcore 的文件服务器在高版本安卓上没响应,转而投向 java 原生的 Socket 服务, https://blog.csdn.net/mashoujun2012/article/details/70312018,改了一下,getInputStream() 有反应,然后 getOutputStream() 就没响应了,百思不得其解,搞了一天。
反复对比实验发现 inputStream.read(buffer) 本身就是自循环,如果放在循环里面就会死循环,后面的 getOutputStream() 无法执行。
错误的方法
InputStream inputStream = remotePeer.getInputStream();
byte buffer[] = new byte[1024 * 4];
int temp = 0;
while ((temp = inputStream.read(buffer)) != -1) {......
}
String s = new String(buffer, "UTF-8");
Log.e(Thread.currentThread().getStackTrace()[2] + "", s);
正确的方法
InputStream IS = remotePeer.getInputStream();
byte buffer[] = new byte[1024 * 4];
IS.read(buffer);
String s = new String(buffer, "UTF-8");
Log.e(Thread.currentThread().getStackTrace()[2] + "", s);
这篇关于Socket.getInputStream() 阻塞的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!