1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107
|
package quizzy;
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
import java.io.PrintWriter;
import java.net.Socket;
public class QuizzyClient{
static final int port = 777;
userListener user;
serverListener server;
Socket socket;
BufferedReader in , inFromServer;
PrintWriter outToServer;
public static void main(String[] args) throws Exception {
new QuizzyClient();
}
QuizzyClient() throws IOException{
socket = new Socket("127.0.0.1", port);
System.out.println("SOCKET = " + socket);
//a virer: test console
in = new BufferedReader(new InputStreamReader(System.in));
inFromServer = new BufferedReader(
new InputStreamReader(socket.getInputStream())
);
outToServer = new PrintWriter(
new BufferedWriter(
new OutputStreamWriter(socket.getOutputStream())),
true);
//sequence d' initialisation (connexion au serveur)
//mis ici surtout pour l' exemple de fonctionnement (oui, say pabo!)
System.out.println("pseudo ?");
outToServer.println("/nick "+in.readLine());
System.out.println("salon ?");
outToServer.println("/join "+in.readLine());
//userListener et serverListener sont des objets de type thread qui attendent
//un message de la console ou du serveur
//lorsqu'ils detectent un message/commande,
//ils appellent les fonctions "userCommand" / "serverCommand" suivantes
user = new userListener(this,in,System.out);
server = new serverListener(this,inFromServer,outToServer);
}
protected void userCommand(String str){
try{
if (str.charAt(0)=='/'){ //si c' est une commande:
String[] command = str.split(" ");
if(command[0].equals("/quit")){//client deconnection
System.out.println("fin du programme client !"); // message de terminaison
inFromServer.close();
outToServer.close();
socket.close();
}else if(command[0].equals("/killserv")){//kill le serveur !
user.say("/quit");
}else{ //pas une commande locale: on envoie au serveur !
server.say(str);
}
}else{ //si c'est pas une commande (pas de prefixe '/') !
server.say(str); // envois du message au serveur
}
}catch (Exception e) {
// TODO: handle exception
}
}
protected void serverCommand(String str){
System.out.println(str); //ecourté ... ressemble à userCommand mais vers le serveur
}
} |
Partager