У меня есть подключение к сокету 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);
Получение входных и выходных потоков и запись некоторых исходных данных:
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();
Тогда это условие всегда проходит без блокировки:
int c = inputStream.read();
if (c < 0) {
Log.d(TAG, "End of stream");
}
Этот код выполняется в фоновом потоке. И это работало над Gingerbread.
Пробовал использовать InputStreamReader и OutputStreamWriter вместо прямых потоков - безрезультатно.
uses-permission android:name="android.permission.INTERNET
. - person faceman   schedule 01.03.2013XmlPullParser
, которая перестала работать сInputStream
, но вместо этого любезно принялаInputStreamReader
: заголовок stackoverflow.com/questions/11190494/ - person Alexander Sukharev   schedule 01.03.2013NetworkOnMainThreadException
. Извините, не могу вам помочь - person faceman   schedule 01.03.2013the problem was in my router.when i create portable hots pot from my s3 it worked perfectly.thanks for your attention
. - person Vikram   schedule 07.09.2013