服务端 新建一线程一直在等待输入流:
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这个方法。。
温馨提示:答案为网友推荐,仅供参考