Я сделал сценарий для обмена данными между клиентом и сервером с сокетом на конкретном порту. Для того, я ожидал:Сокет не промывает данные
Сервер прослушивает
клиент открывает сокет
akwnoledges сервера, послав Int -> никогда не получали!
Я просто заметил, что мой клиент получает ИНТ , когда я бросить курить сервер зверски
Вот мой (простой) код. Клиент:
Socket socket = new Socket(SERVER_ADDR, PORT);
DataOutputStream dOut = new DataOutputStream(socket.getOutputStream());
DataInputStream dIn = new DataInputStream(socket.getInputStream());
Log.v("[DEBUG]", "waiting aknowledgement");
status = dIn.readInt(); //<-- BLOCKS HERE
Log.v("[DEBUG]", "ack"); //<-- RECEIVED WHEN SERVER IS EXITED
Сервер:
try {
DataInputStream stdIn = new DataInputStream(client.getInputStream());
DataOutputStream stdOut = new DataOutputStream(client.getOutputStream());
while (incoming) {
stdOut.writeInt(1);
stdOut.flush();
System.out.println("Waiting...");
var_from_client = stdIn.readInt(); //<-- BLOCKS HERE (BECAUSE CLIENT IS BLOCKED)
// ...
}
} catch (Exception e) {}
Как объяснить эту ошибку?
См. Http://stackoverflow.com/questions/41685367/send-data-from-android-mobile-to-java-server?noredirect1_comment70569691_41685367. Я не проигнорировал исключение, и я правильно отправил свои данные. С уважением – Anduriel