J'ai fait un script pour échanger des données entre un client et un serveur avec socket sur un port spécifique. Pour, je me attends:Socket ne pas vidage des données
Server écoute
client ouvre un socket
akwnoledges Server en envoyant un int -> jamais reçu!
Je viens de remarquer que mon client reçoit l'int, quand je quitte le serveur brutalement
Voici mon code (simple). Client:
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
Serveur:
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) {}
Comment expliquer cette erreur?
Veuillez consulter http://stackoverflow.com/questions/41685367/send-data-from-android-mobile-to-java-server?noredirect=1#comment70569691_41685367. Je n'ai pas ignoré l'exception, et j'ai envoyé correctement mes données. Cordialement – Anduriel