Java socket 输入流InputStream.read()的阻塞问题

服务端 新建一线程一直在等待输入流:
while (true)
{
bytes = mmInStream.read(buffer);// Read from the InputStream
System.out.prinyf(buffer.toString());
}

客户端 发出输出流:
mOutputStream.write(buffer);
mOutputStream.flush();

/////////////////////////////////////////////////////////
测试后发现:客户端发出数据后,服务端还是阻塞在InputStream.read()处
如果mOutputStream.flush() 换成mOutputStream.close() 服务端就能收到数据
为什么?怎么解决?(输出流不能关闭,因为要持续传数据)

独立出线程,这样就没事追问

我服务端已经是独立的线程在读取输入流啊

追答

1.InputStream.read()本来就是堵塞式的
一线等待,还有二线干活 接收的数据不会丢失 很多人都用线程池来做
2.使用Socket.SetSoTimeout,设置读取的超时时间,如果读到数据,则继续执行,否则抛出异常。

追问

线程池做法能给个代码吗?能用的话再加50分
我服务端InputStream是StreamConnection对象的,它没有SetSoTimeout这个方法。。

温馨提示:答案为网友推荐,仅供参考

相关了解……

你可能感兴趣的内容

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 非常风气网