Skip to content

Commit

Permalink
Merge branch 'cmd_feature'
Browse files Browse the repository at this point in the history
  • Loading branch information
prospere committed Mar 22, 2019
2 parents efe9143 + 6cfab91 commit f8c0cbe
Show file tree
Hide file tree
Showing 10 changed files with 164 additions and 259 deletions.
2 changes: 0 additions & 2 deletions java_serv/src/ConnexionFluxWebcam.java
Original file line number Diff line number Diff line change
Expand Up @@ -5,8 +5,6 @@
import java.io.PrintWriter;
import java.net.Socket;
import java.net.UnknownHostException;
import java.nio.CharBuffer;
import java.util.ArrayList;
import java.util.concurrent.TimeUnit;

/**
Expand Down
178 changes: 88 additions & 90 deletions java_serv/src/ConnexionJava.java
Original file line number Diff line number Diff line change
@@ -1,90 +1,88 @@
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.PrintWriter;
import java.net.Socket;
import java.util.concurrent.TimeUnit;

import org.json.JSONObject;
/**
* Classe gérant la connexion en java. (Surtout utilisé pour des tests)
* @author lalandef
*
*/

public class ConnexionJava implements Runnable {
private ServerRobotino serverRobotino;
private Socket socketClient;
private PrintWriter out;
private BufferedReader in;
public ConnexionJava(ServerRobotino serverRobotino, Socket socketClient, String firstLine, BufferedReader in) {
try {
this.out = new PrintWriter(socketClient.getOutputStream(), true);
this.in = in;
out.println("{\"type\":\"init\",\"infoInit\":\"Connection accepté\"}");
} catch (IOException e) {
e.printStackTrace();
}
this.serverRobotino=serverRobotino;
this.socketClient=socketClient;
System.out.println("CoJ\tgetIntputStreamServer: "+firstLine);
JSONObject JSON = new JSONObject(firstLine);
try{
String info = JSON.getString("infoInit");
System.out.println("CoRobot\tinfo: "+info);
}catch(org.json.JSONException e){
}
}

/**
* Initie la connexion et attend les requête de l'application Java
*/
public void run() {
serverRobotino.addConnexionJava(this);
try {
String inLine = "";
while(this.serverRobotino.isServerRunning()&&inLine!=null){//lecture des nouveau message
inLine = in.readLine();
System.out.println("CoJ\tgetIntputStreamServer2: "+inLine);
this.decodeurJson(inLine);
}
} catch (IOException e) {/*e.printStackTrace();*/}//connexion fermé
System.out.println("CoJ\ttest fin de conection par rupture de connexion: ");
serverRobotino.removeConnexionJava(this);
}

/**
* Fonction permettant le decodage du JSON et le traitement selon les params du projet
* appelle la lib JSON pour faire sa magie
* TODO faire autre chose que renvoyer les messages
* @param j
*/
public void decodeurJson(String j) {
try{
JSONObject JSON = new JSONObject(j);
String type = JSON.getString("type");
System.out.println("CoJ\ttype:"+type);

if(type.equals("init")){//inutilisé ici, uniquement au début de la classe connexion
String info = JSON.getString("infoStart");
System.out.println("CoJ\tinfo: "+info);

}else if(type.equals("message")){//message
String message = JSON.getString("message");
System.out.println("CoJ\tMessage: "+message);
}
}catch(org.json.JSONException e){
System.out.println("CoJ\terreur decodage JSON: "+e);
System.out.println("CoJ\tJSON: "+j);
}
}

/**
* Envoie un message JSON aux autre utilisateur(Un ou plusieur selon ce qui est précisé dans le message)
* @param m message JSON à envoyer
*/
public void envoyerMessage(String m){
out.println(m);
}

}
import java.io.BufferedReader;
import java.io.IOException;
import java.io.PrintWriter;
import java.net.Socket;

import org.json.JSONObject;
/**
* Classe gérant la connexion en java. (Surtout utilisé pour des tests)
* @author lalandef
*
*/

public class ConnexionJava implements Runnable {
private ServerRobotino serverRobotino;
private Socket socketClient;
private PrintWriter out;
private BufferedReader in;
public ConnexionJava(ServerRobotino serverRobotino, Socket socketClient, String firstLine, BufferedReader in) {
try {
this.out = new PrintWriter(socketClient.getOutputStream(), true);
this.in = in;
out.println("{\"type\":\"init\",\"infoInit\":\"Connection accepté\"}");
} catch (IOException e) {
e.printStackTrace();
}
this.serverRobotino=serverRobotino;
this.socketClient=socketClient;
System.out.println("CoJ\tgetIntputStreamServer: "+firstLine);
JSONObject JSON = new JSONObject(firstLine);
try{
String info = JSON.getString("infoInit");
System.out.println("CoRobot\tinfo: "+info);
}catch(org.json.JSONException e){
}
}

/**
* Initie la connexion et attend les requête de l'application Java
*/
public void run() {
serverRobotino.addConnexionJava(this);
try {
String inLine = "";
while(this.serverRobotino.isServerRunning()&&inLine!=null){//lecture des nouveau message
inLine = in.readLine();
System.out.println("CoJ\tgetIntputStreamServer2: "+inLine);
this.decodeurJson(inLine);
}
} catch (IOException e) {/*e.printStackTrace();*/}//connexion fermé
System.out.println("CoJ\ttest fin de conection par rupture de connexion: ");
serverRobotino.removeConnexionJava(this);
}

/**
* Fonction permettant le decodage du JSON et le traitement selon les params du projet
* appelle la lib JSON pour faire sa magie
* TODO faire autre chose que renvoyer les messages
* @param j
*/
public void decodeurJson(String j) {
try{
JSONObject JSON = new JSONObject(j);
String type = JSON.getString("type");
System.out.println("CoJ\ttype:"+type);

if(type.equals("init")){//inutilisé ici, uniquement au début de la classe connexion
String info = JSON.getString("infoStart");
System.out.println("CoJ\tinfo: "+info);

}else if(type.equals("message")){//message
String message = JSON.getString("message");
System.out.println("CoJ\tMessage: "+message);
}
}catch(org.json.JSONException e){
System.out.println("CoJ\terreur decodage JSON: "+e);
System.out.println("CoJ\tJSON: "+j);
}
}

/**
* Envoie un message JSON aux autre utilisateur(Un ou plusieur selon ce qui est précisé dans le message)
* @param m message JSON à envoyer
*/
public void envoyerMessage(String m){
out.println(m);
}

}
2 changes: 0 additions & 2 deletions java_serv/src/ConnexionWeb.java
Original file line number Diff line number Diff line change
@@ -1,14 +1,12 @@
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.PrintWriter;
import java.io.UnsupportedEncodingException;
import java.net.Socket;
import java.security.MessageDigest;
import java.security.NoSuchAlgorithmException;
import java.util.ArrayList;
import java.util.concurrent.TimeUnit;

import javax.xml.bind.DatatypeConverter;

Expand Down
39 changes: 24 additions & 15 deletions java_serv/src/ServerRobotino.java
Original file line number Diff line number Diff line change
Expand Up @@ -2,24 +2,22 @@
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.PrintWriter;
import java.net.InetAddress;
import java.net.ServerSocket;
import java.net.Socket;
import java.net.UnknownHostException;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.Map;
import java.util.concurrent.Semaphore;

import org.json.JSONObject;

import picocli.CommandLine.Option;

/**
* Classe qui represente le serveur principal.
* Tout le monde s'y connecte, il redistribue les messages,
* ouvre les connexions qui vont bien toussa.
*/
public class ServerRobotino {
private int portServeur;
public class ServerRobotino implements Runnable {
private ServerSocket socketServer = null;
private ArrayList<ConnexionJava> connexionsJava = new ArrayList<ConnexionJava>();
private ArrayList<ConnexionRobotino> connexionsRobotino = new ArrayList<ConnexionRobotino>();
Expand All @@ -28,26 +26,29 @@ public class ServerRobotino {
public ArrayList<ConnexionFluxWebcam> connexionsFluxWebcam = new ArrayList<ConnexionFluxWebcam>();
public ArrayList<WaitNewConnexionSendFluxWebcam> waitNewConnexionSendFluxWebcams = new ArrayList<WaitNewConnexionSendFluxWebcam>();
public ArrayList<ConnexionSensorsDatabase> connexionsSensorsDatabase = new ArrayList<ConnexionSensorsDatabase>();
//public ArrayList<ConnexionSendFluxWebcam> connexionsSendFluxWebcam = new ArrayList<ConnexionSendFluxWebcam>();
//private ArrayList<Connexion> connexionsRobotino = new ArrayList<Connexion>();
public int portDispo = 50010;
HashMap<String,Integer> mapNameWebcam_Port = new HashMap<String, Integer>();

//private Thread t1;
private boolean serverRunning = true;
public ServerRobotino(int port) {
private boolean serverRunning;

//Config stuff
@Option(names = {"--portDisp","-pd"}, description = "Sets which port is available for camera restreaming. Needs to have the following port open as well for multiple cameras (default: ${DEFAULT-VALUE}).")
public int portDispo = 50010;
@Option(names = {"--port","-p"}, description = "Sets on which port the server will listen for incoming connexions (default: ${DEFAULT-VALUE}). ")
private int portServeur = 50008;

public ServerRobotino() {}

public void run(){
try {
this.portServeur=port;
//ip = InetAddress.getLocalHost ().getHostAddress ();
//nom = "Server Robotion v1";
socketServer = new ServerSocket(this.portServeur);
serverRunning = true;
} catch (UnknownHostException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
this.waitNewConnexion();
}

/**
* Attend les connexions puis les analyse pour savoir si c'est une connexion web, robotino où autre
*/
Expand Down Expand Up @@ -285,4 +286,12 @@ public synchronized String getLinkVideoRobot(String ipRobot) {
//return "193.48.125.71:1337";
return "193.48.125.70:50008";
}

public int getPortServeur() {
return portServeur;
}

public void setPortServeur(int portServeur) {
this.portServeur = portServeur;
}
}
7 changes: 0 additions & 7 deletions java_serv/src/config.properties

This file was deleted.

67 changes: 0 additions & 67 deletions java_serv/src/configIO.java

This file was deleted.

28 changes: 15 additions & 13 deletions java_serv/src/main.java
Original file line number Diff line number Diff line change
@@ -1,13 +1,15 @@
/**
* Execute le server
* @author lalandef
*
*/
public class main {

public static void main(String[] args) {
int port= 50008; //configIO.getJavaPort() ;
ServerRobotino server = new ServerRobotino(port);
}

}
/**
* Execute le server
* @author lalandef
*
*/
public class main {

public static void main(String[] args) {
int port= 50008; //configIO.getJavaPort() ;
ServerRobotino server = new ServerRobotino();
server.setPortServeur(port);
server.run();
}

}
Loading

0 comments on commit f8c0cbe

Please sign in to comment.