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
| public class ClientManaging implements Runnable{
private static Socket sock;
private static PrintWriter writer = null;
private BufferedInputStream reader = null;
public static String Nom = "default";
public static String Id = "default";
public static int compteur = 0;
public static int var = 0;
public ClientManaging(Socket pSock){
sock = pSock;
}
public void run(){
System.out.println("Lancement du traitement de la connexion cliente " + compteur);
boolean closeConnexion = false;
while(!sock.isClosed()){
try {
writer = new PrintWriter(sock.getOutputStream());
reader = new BufferedInputStream(sock.getInputStream());
//On attend la demande du client
String response = read();
InetSocketAddress remote = (InetSocketAddress)sock.getRemoteSocketAddress();
if(response.length() > 7) //ici on traite les demandes de l'arduino
{
//c'est des conditions qui dependent de notre code, ne pas trop tenir compte
System.out.println("NEW COMMAND RECIEVED: "+response.substring(0, response.indexOf("-")));
if(response.substring(0, response.indexOf("-")).equals("passages") ||
response.substring(0, response.indexOf("-")).equals("gps") ||
response.substring(0, response.indexOf("-")).equals("nomcourtligne")){
try {
if(response.substring(0, response.indexOf("-")).equals("nomcourtligne")){
System.out.println("response = " + response + "length de ersponse = " + response.length());
System.out.println("length de c4= " + response.substring(response.lastIndexOf("-")+1).length());
System.out.println("length de c4 coupé :" + response.substring(response.lastIndexOf("-") + 1, response.indexOf("4")+1).length());
}
Breyes.star(response);
} catch (MalformedURLException ex) {
Logger.getLogger(ClientProcessor.class.getName()).log(Level.SEVERE, null, ex);
} catch (InterruptedException ex) {
Logger.getLogger(ClientProcessor.class.getName()).log(Level.SEVERE, null, ex);
}
}
//sock.close();
}
else //on traite la demande de l'application
{
System.out.println("nom = " + Nom + " id = " + Id);
while(Nom.equals("default"))
{
System.err.println("en attente du nom");
Nom = Breyes.Name; //ici on prend la valeur de la variable globale dans une autre classe quand elle change on sort de la boucle et on envoie l'info
Id = Breyes.idbus;
}
if(response.substring(0,response.indexOf(".")).equals(Id))
{
//c'est ici qu'on répond à l'appli
writer.write(Nom);
writer.flush();
//sock.close();
}
else
{
writer.write("Aucun zombie a l'arret");
writer.flush();
sock.close();
}
}
}catch(SocketException e){
System.err.println("LA CONNEXION A ETE INTERROMPUE ! ");
break;
} catch (IOException e) {
e.printStackTrace();
}
}
}
//La méthode que nous utilisons pour lire les réponses
private String read() throws IOException{
String response = "";
int stream;
byte[] b = new byte[4096];
System.out.println("YOUHOU YOUHOU YOUHOU");
stream = reader.read(b);
response = new String(b, 0, stream);
return response;
}
//cette fonction qui suit envoit sans arrêt dans une boucle le temps à l'arduino, dès que l'appli se connecte et fait une demande on répond à l'appli, et on continue à executer cette fonction, mais en répondant à l'appli alors que ca doit etre à l'arduino
public static void envoi_temps(String temps) throws IOException{
System.out.println("envoi temps: "+temps);
writer = new PrintWriter(sock.getOutputStream());
writer.write(temps);
writer.flush();
}
} |
Partager