Итак, у меня есть этот код клиента, который я тестировал в eclipse, и он работает там
try {
// Establish connection
Socket socket = new Socket(InetAddress.getByName("192.168.1.104"), 9000);
// Request data
OutputStream outputStream = socket.getOutputStream();
InputStream inputStream = socket.getInputStream();
msg = "IDGN:" + "1";
System.out.println(msg);
outputStream.write(msg.getBytes());
socket.shutdownOutput();
scanner = new DataInputStream(inputStream);
restaurante = scanner.readUTF();
System.out.println(restaurante);
// Shut down socket
socket.shutdownInput();
socket.close();
} catch (IOException io) {
io.printStackTrace();
}
Но когда я пытаюсь сделать то же самое в моем приложении для Android, происходит сбой
try {
// Establish connection
Socket socket = new Socket(InetAddress.getByName("192.168.1.104"), 9000);
// Request data
OutputStream outputStream = socket.getOutputStream();
InputStream inputStream = socket.getInputStream();
msg = "IDGN:" + "1";
outputStream.write(msg.getBytes());
socket.shutdownOutput();
scanner = new DataInputStream(inputStream);
restaurante = scanner.readUTF();
View b = findViewById(R.id.texto);
b.setVisibility(View.VISIBLE);
String ss = "Valore el servicio recibido en: " + restaurante;
((TextView) b).setText(ss);
// Shut down socket
socket.shutdownInput();
socket.close();
}catch (IOException io) {
io.printStackTrace();
}
Я просто не знаю, почему, и я пытался заставить его ждать готовности данных, изменить его на OutputStream и прочитать строку со сканера, чтобы прочитать байты непосредственно из OutputStream.
Сервер, похоже, получает штраф в обоих случаях (Android и Eclipse) и отправляет правильный ответ.