sslsocket читает только один раз из inputtream, почему?
Часть подключения к серверу завершена, но не всегда может прочитать данные из inputtream и может быть прочитана только один раз.
public void startSSLClient() throws IOException {
inf = new Inflater();
mSocketBufferReader = new BufferedReader(new InputStreamReader(mSslSocket.getInputStream()));
new Thread() {
boolean online =false;
String s;
@Override
public void run() {
try {
while ( true ) {
String str = mSocketBufferReader.readLine();
if (!TextUtils.isEmpty(str)) {
Logger.e("PacketReader","process packet : "+str);
}
}
}
catch (Exception e) {
System.out.println("Error: " + e);
}
}
}.start();
}
Если я попробую это, это работает, что всегда читает из inputtream.
public void startSSLClient() throws IOException {
inf = new Inflater();
new Thread() {
boolean online =false;
String s;
@Override
public void run() {
try {
while ( true ) {
BufferedReader mSocketBufferReader = new BufferedReader(new InputStreamReader(mSslSocket.getInputStream()));
String str = mSocketBufferReader.readLine();
if (!TextUtils.isEmpty(str)) {
Logger.e("PacketReader","process packet : "+str);
}
}
}
catch (Exception e) {
System.out.println("Error: " + e);
}
}
}.start();
}
Я не знаю причину. Я просто хочу использовать глобальное поле. Я не хочу всегда использовать новое локальное поле.
1 ответ
BufferedReader mSocketBufferReader = new BufferedReader(new InputStreamReader(mSslSocket.getInputStream()));
Возьми это из цикла. Вы можете выполнить этот оператор только один раз для соединения.