Я использую метод под названием registerDevice()
в коде моего приложения для Android для отправки и получения определенных данных, которые содержат несколько строк.Но я получаю эту ошибку:
W / System.err: java.net.SocketException: сброс соединения
public void registerDevice(){
final Handler handler = new Handler();
Thread thread = new Thread(new Runnable() {
@Override
public void run() {
try {
Socket s = new Socket(gateway, 1234);
OutputStream out = s.getOutputStream();
PrintWriter output = new PrintWriter(out);
BufferedReader input = new BufferedReader(new InputStreamReader(s.getInputStream()));
output.println("hello world\r\n");
output.flush();
StringBuffer stringBuffer = new StringBuffer("");
String line = null;
while ((line = input.readLine()) != null) {
stringBuffer.append(line);
}
final String st = line.substring(5);
handler.post(new Runnable() {
@Override
public void run() {
if (st.trim().length() != 0)
Toast.makeText(getApplicationContext(),st,Toast.LENGTH_LONG).show();
}
});
output.close();
out.close();
s.close();
} catch (IOException e) {
e.printStackTrace();
}
}
});
thread.start();
}
ОБНОВЛЕНИЕ: Я изменил код на это:
Socket s = new Socket(gateway, 1234);
OutputStream out = s.getOutputStream();
PrintWriter output = new PrintWriter(out);
BufferedReader input = new BufferedReader(new InputStreamReader(s.getInputStream()));
output.println("hello world\r\n");
output.flush();
final String st = input.readLine();
handler.post(new Runnable() {
@Override
public void run() {
if (st.trim().length() != 0)
Toast.makeText(getApplicationContext(),"st",Toast.LENGTH_LONG).show();
}
});
output.close();
out.close();
s.close();
} catch (IOException e) {
e.printStackTrace();
}
}
Я все еще получаю исключения для "final String st = input.readLine ();"линия.Я должен получить MAC-адрес от сервера, а затем сервер закрывает соединение. Я проверил сервер, и в этом нет ничего плохого, он закрывает соединение ПОСЛЕ того, как отправляет мне MAC.