MyWriter.java (exécuter cette avant MyReader.java)lors de l'écriture d'octets d'écriture OutputStream (en interne), alors pourquoi la lecture de InputStream renvoie int?
import java.io.*;
import java.net.*;
import java.util.* ;
public class MyWriter {
public static void main(String[] args) throws Exception {
ServerSocket ss = new ServerSocket(1234) ;
System.out.println("Server started...\n\n") ;
Socket s = ss.accept() ;
OutputStream out = s.getOutputStream() ;
Scanner scan = new Scanner(System.in) ;
while(true){
System.out.print("Enter integer (or something else to quit) : ");
try{
int i = scan.nextInt() ;
out.write(i) ;
}catch(RuntimeException rte){
System.out.println("\n\n") ;
rte.printStackTrace() ;
System.out.println("\n\n") ;
break ;
}
}
}
}
MyReader.java (seulement exécuté, lorsque vous avez terminé avec MyWriter.java)
import java.io.*;
import java.net.*;
import java.util.* ;
public class MyReader {
public static void main(String[] args) throws Exception {
Socket s = new Socket("localhost", 1234) ;
InputStream is = s.getInputStream() ;
int i ;
while((i = is.read()) != -1){
System.out.println("character form : " + (char)i + ", int form : " + i);
}
}
}
Problème: MyReader ne se termine pas, même si je passe -1 dans MyWriter.
Est-ce MyWriter fin? Il devrait imprimer une trace de pile et le processus devrait quitter. Si ce n'est pas le cas, le socket est toujours ouvert et le lecteur bloquera l'attente de plus de saisie. – erickson
il ne se termine que pour une valeur non-entière (les exceptions ne sont pas gérées correctement pour que le code pointe sur le problème exact). sinon, il est dans while (true) loop. Considérons que mon entrée est seulement un entier avec l'une des entrées possibles -1, pour lesquelles MyReader se termine, mais elle ne se termine pas. – mogli