J'ai crée 2 petites classes (Client et Server) pour faire un test:
Je voulais voir le comportement du server lors de l'arrachage du cable réseau d'un coté ou de l'autre.
voici les 2 classes :
Server.java
Code :
- private void listen() {
- while(!stop) {
- try {
- this.serverSocket = new ServerSocket(port);
- System.out.println( "Ecoute de connexion admin sur le port: "+port);
- this.serverSocket.setSoTimeout(10000);
- this.socket = this.serverSocket.accept();
- while (true){
- byte[] b = new byte["SEND".getBytes().length];
- b = "SEND".getBytes();
- System.out.println("#################" );
- socket.getOutputStream().write(b);
- socket.getOutputStream().flush();
- }
- //closeConnexion();
- } catch(SocketException e) {
- e.printStackTrace();
- closeConnexion();
- } catch(Exception e) {
- e.printStackTrace();
- closeConnexion();
- }
- }
- }
- public static void main(String args[]){
- new Server().listen();
- }
|
Client:
Code :
- private static void connectAndReceive(String address) {
- boolean isConnected = false;
- //connect
- while (!isConnected ){
- try {
- socket = new Socket( InetAddress.getByName(address), 6668);
- isConnected = true;
- }
- catch (IOException ioEx) {
- System.out.println("Erreur lors de l'etablissement de la connexion avec le dispatcher : " + ioEx.toString());
- try {Thread.sleep(2000);
- }
- catch (InterruptedException iEx) {
- System.out.println("Erreur lors de la temporisation : " + iEx.toString());
- }
- }
- }
- System.out.println("connect="+isConnected);
- //listen
- boolean listen = true;
- while (listen){
- try {
- BufferedInputStream stream_ = new BufferedInputStream(socket.getInputStream());
- byte[] bloc = new byte[4];
- int nc = stream_.read(bloc, 0, bloc.length);
- System.out.print(nc);
- if (nc>-1) System.out.print(new String(bloc, 0, nc));
- }
- catch (IOException ioEx) {
- ioEx.printStackTrace();
- listen = false;
- }
- }
- }
- public static void main(String[] args){
- new Client().connectAndReceive(args[0]);
- }
|
Quelque soit la version du jdk utilisée pour la compilation et l'exéction, le serveur ne détecte rien, il atrrete d'écrire sans faire d'exception, coté client, c'est pareil.
Vous savez s'il y a moyen de détecter l'arrachage de cable?
Merci