La classe scanner

Fermé
jo-concept - 30 avril 2011 à 01:24
KX Messages postés 16755 Date d'inscription samedi 31 mai 2008 Statut Modérateur Dernière intervention 12 février 2025 - 30 avril 2011 à 02:10
Bonjour,
je suis debutant en java cependant j'ai des soucis avec ce code et j'aimerais que quelqu'un me l'explique en le commentant ligne par ligne.en faite j'ai comme une forte impression que si je comprends bien ce code j'aurais la solution a tout un tas de question que je me pose donc merci d'etre aussi granuleux dans l'explication que possible.

voila le code

package com.daedric.net;



import java.io.*;

import java.net.*;

import java.util.Scanner;



public class Connection {

private InputStream in;
private PrintWriter out;
private OutputStream outstream;
private Scanner sc;
public Socket sock;
public Connection(Socket i) throws IOException {


sock = i;
in = sock.getInputStream();
outstream = sock.getOutputStream()
out = new PrintWriter(outstream, true);
sc = new Scanner(in);

}



public void flush() throws IOException {

getOutputStream().flush();
this.out.flush();

}



public InputStream getInputStream() {

return in;

}

public OutputStream getOutputStream() {

return outstream;

}

public PrintWriter getPrintWriterStream() {

return out;

}

public Scanner getScan() {

return sc;

}

public Socket getSock() {

return sock;

}

public void sendMes(Object Mess) {

this.out.println(Mess);

this.out.flush();

}

public void sendObj(Object Mess) {

try {

ObjectOutputStream out = new ObjectOutputStream(getOutputStream());

out.writeObject(Mess);

out.flush();

} catch (IOException e) {

// TODO Auto-generated catch block

e.printStackTrace();

} finally {

}

}



public void setSock(Socket sock) {

this.sock = sock;

}

public String toString() {

return "" + sock.getInetAddress();

}



public boolean is(String ip) {

String localIp = this.toString();

//vive l'operateur ternaire

return ip.compareTo(localIp = localIp.indexOf('/') > 0 ? localIp

.substring(localIp.indexOf('/') + 1) : localIp) == 0;

}

/**

* ferme toutes les connections

*

*/

public void close() {

try {

this.flush();

this.getInputStream().close();

this.getOutputStream().close();

this.getSock().close();

} catch (IOException e) {

// TODO Auto-generated catch block

e.printStackTrace();

}



}

}

La classe si dessus d?interagir avec une socket de la manière la plus simple possible



Je l?ai couplé un Thread avec cette classe qui a cette forme :



public class MReadingThread extends Thread {

private Connection c;
private Vector vect = new Vector();
public MReadingThread(Connection c) {

this.c = c;

}

public void run() {

Scanner sc = c.getScan();

for (;;) {

String s = sc.nextLine();

System.out.println("reception du serveur ===>" + s);

if (s.length() > 0) {

int sign = new Scanner(s).nextInt();

// System.out.println("sign = " + sign);

switch (sign) {

// je vous epergne quelque page de code :p

}



}

}

}



}


A voir également:

1 réponse

KX Messages postés 16755 Date d'inscription samedi 31 mai 2008 Statut Modérateur Dernière intervention 12 février 2025 3 020
Modifié par KX le 30/04/2011 à 07:59
Regarde ce code, c'est peut-être pas tout à fait le même version, mais c'est la même classe, du même auteur, mais surtout c'est commenté ! Ça te permettra de comprendre...

Si tu as des problèmes avec Scanner, consultes sa documentation.
La confiance n'exclut pas le contrôle
0