Ale*_*rev 20 java sockets android inputstream android-4.2-jelly-bean
我有一个TCP套接字连接,在Android 2.3上运行良好但现在面临Android 4.1上的一些问题.问题是InputStream.read()方法总是返回-1(没有阻塞),就像关闭连接一样.
创建套接字:
SocketFactory socketFactory = SocketFactory.getDefault();
Socket socket = socketFactory.createSocket("c.whatsapp.net", 5222);
socket.setSoTimeout(3*60*1000);
socket.setTcpNoDelay(true);
Run Code Online (Sandbox Code Playgroud)
检索输入和输出流并编写一些初始数据:
InputStream inputStream = new BufferedInputStream(socket.getInputStream());
OutputStream outputStream = new BufferedOutputStream(socket.getOutputStream());
outputStream.write(87);
outputStream.write(65);
outputStream.write(1);
outputStream.write(2);
outputStream.flush();
Run Code Online (Sandbox Code Playgroud)
然后,这个条件总是不受阻塞地通过:
int c = inputStream.read();
if (c < 0) {
Log.d(TAG, "End of stream");
}
Run Code Online (Sandbox Code Playgroud)
此代码在后台线程中运行.它正在开发姜饼.
试图使用InputStreamReader和OutputStreamWriter而不是直接流 - 没有效果.
Fel*_*ima -1
您应该使用 Apache Commons IO:http ://commons.apache.org/proper/commons-io/
请参阅IOUtils.copy() http://commons.apache.org/proper/commons-io/javadocs/api-release/index.html?org/apache/commons/io/package-summary.html