Bonjour,
Je dois établir un protocole de communication.
Je dispose d'un badge RFID qui possede un ID que je dois transmettre à un poste de supervision. Mais pour cela le badge RFID doit passer un portillon.
La communication s’opère en trois phases.
-Tout d’abord la phase de connexion.
-Puis, la phase d’identification dans laquelle notre client envoie les caractères HW suivie du caractère correspondant au mode d’initialisation du portique. En cas de bonne identification le serveur renvoie les caractères HX suivie d’un numéro qu’il attribue lui-même à chaque lecteur RFID définitivement; ce numéro étant attribuer lors de la première demande d’identification d’un lecteur.
-Enfin, la phase d’envoi de l’identifiant du badge dans laquelle notre client envoie les caractères NT suivie de l’identifiant du lecteur RFID qui lui envoie cette trame puis de l’identifiant du badge. Cette phase d’envoi de trame s’effectue à chaque fois que l’on a à vérifier un badge jusqu’à une éventuelle déconnexion du client.

J'ai commencé a coder cela en Java( langage que je maitrise mieux que le c++ pour m'aider). Mais ma partie doit ce faire en C++ hors c'est un langage que j'ai enormement de mal a cerner....J'ai deja crée la parti Serveur pour mon collegue en Java.
Voila une partie de mon code en Java coté client:
Code:
package projet;

import java.net.*;
import java.io.*;

public class Client_TCP extends Thread{

		private Socket sock;
		private char IDnetronix;
		private String donnee="";
		private String IDtag;
		private char mode;
		
		
		public void Connexion(){
			try {
				sock = new Socket("192.168.12.174",1337);
			} catch (UnknownHostException e1) {
				e1.printStackTrace();
			} catch (IOException e1) {
				//e1.printStackTrace();
			}
				while(sock==null){	
					try {
						sleep(2000);
					} catch (InterruptedException e) {
						e.printStackTrace();
					}
					System.out.println("	tentative de connexion");
					try {
						sock = new Socket("192.168.12.174",1337);
					} catch (UnknownHostException e) {
						e.printStackTrace();
					} catch (IOException e) {
						//e.printStackTrace();
					}
				}
			System.out.println("	---------------------------------------------");
			System.out.println("		Connexion réussie");
			System.out.println("	---------------------------------------------");
		}
		
		public void Identification(){
			
			System.out.println("	---------------------------------------------");
			System.out.println("		Identification	");
			System.out.println("	---------------------------------------------");
			
			PrintWriter ecrireSock;
			BufferedReader lireSock;
			//System.out.println("	mode??? :"+getMode());
			
			try {
				ecrireSock = new PrintWriter(sock.getOutputStream());
			
				lireSock = new BufferedReader(new InputStreamReader(sock.getInputStream()));
			
				if(getMode()=='e' || getMode()=='E'){
					System.out.println("	---------------------------------------------");
					System.out.println("	  	Portique d'entrée ");
					System.out.println("	---------------------------------------------");
					ecrireSock.println("HW E");
					if(ecrireSock.checkError()) System.out.println("	Erreur envoie");
					System.out.println("	HW E envoyé");
					ecrireSock.flush();
					
				}
				else if(getMode()=='s' ||getMode()=='S'){
					System.out.println("	---------------------------------------------");
					System.out.println("	  Portique de sortie ");
					System.out.println("	---------------------------------------------");
					ecrireSock.println("HW S");
					if(ecrireSock.checkError()) System.out.println("	Erreur envoie");
					System.out.println("	HW S envoyé");
					ecrireSock.flush();
					
				}
				else if(getMode() =='i' || getMode()=='I'){
					System.out.println("	---------------------------------------------");
					System.out.println("	  Portique d'identification ");
					System.out.println("	---------------------------------------------");
					ecrireSock.println("HW I");
					if(ecrireSock.checkError()) System.out.println("	Erreur envoie");
					System.out.println("	HW I envoyé");
					ecrireSock.flush();
					
				}
				else{
					System.out.println("	 \n Vous n'avez pas choisis un mode de fonctionnement correct \n");
					System.exit(0);
				}
					
				donnee=lireSock.readLine();
				System.out.println("	"+donnee);
				if(donnee.charAt(0)=='H'){
					IDnetronix=donnee.charAt(3);
					System.out.println("	"+donnee.charAt(3));
				}
				System.out.println("	Reception : ");
				System.out.println("	"+donnee);
				System.out.println("\n\n");
			
				} catch (IOException e) {
					e.printStackTrace();
				}
				System.out.println("	---------------------------------------------");
				System.out.println("		Fin identification	");
				System.out.println("	---------------------------------------------");
		}
		
		public void EnvoiTrame(){
			
			 PrintWriter ecrireSock;
			 BufferedReader lireSock;
			 Led led = new Led();
			
			try {
				ecrireSock = new PrintWriter(sock.getOutputStream());
				lireSock = new BufferedReader(new InputStreamReader(sock.getInputStream()));
				
				
			
				
				if(getMode()=='e' || getMode()=='E'){
					ecrireSock.print("NT "+IDnetronix+" "+IDtag.toUpperCase());
					ecrireSock.checkError();
					System.out.println("	NT, IDnetronix, ID tag envoyés");
					donnee=lireSock.readLine();
					System.out.println("	Reception : ");
					System.out.println("	"+donnee);
					
					//Traitement reponse
					if(donnee.charAt(0)=='A' && donnee.charAt(1)=='A'){
						System.out.println("	Allumage led verte");
							led.directionLedVerte();
							led.valueLedVerte();
					}
					
					else if(donnee.charAt(0)=='A' && donnee.charAt(1)=='D'){
						System.out.println("	Allumage led rouge");
							led.directionLedRouge();
							led.valueLedRouge();
					}
					else{
						System.out.println("	Le portique est actuellement désactivé !");
					}
				}
				else if(getMode()=='s' ||getMode()=='S'){
					ecrireSock.print("NT "+IDnetronix+" "+IDtag.toUpperCase());
					ecrireSock.checkError();
					System.out.println("	NT, IDnetronix, ID tag envoyés");
					donnee=lireSock.readLine();
					System.out.println("	Reception : ");
					System.out.println("	"+donnee);
					
					//Traitement reponse
					if(donnee.charAt(0)=='A' && donnee.charAt(1)=='A'){
						System.out.println("	Allumage led verte");
							led.directionLedVerte();
							led.valueLedVerte();
					}
					
					else if(donnee.charAt(0)=='A' && donnee.charAt(1)=='D'){
						System.out.println("	Allumage led rouge");
							led.directionLedRouge();
							led.valueLedRouge();
					}
					else{
						System.out.println("	Le portique est actuellement désactivé !");
					}
					
				}
				else if(getMode() =='i' || getMode()=='I'){
					ecrireSock.print("NT "+IDnetronix+" "+IDtag.toUpperCase());
					ecrireSock.checkError();
					System.out.println("	NT, IDnetronix, ID tag envoyés");
					donnee=lireSock.readLine();
					System.out.println("	Reception : ");
					System.out.println("	"+donnee);
					System.out.println("	Identification terminée");
				}
				
				if(donnee == null){
					Connexion();
					Identification();
					EnvoiTrame();
				}
					
					System.out.println("	---------------------------------------------");
					System.out.println("		Fin Envoie Trame	");
					System.out.println("	---------------------------------------------");
	
					System.out.println("\n");
				
			} catch (IOException e) {
				e.printStackTrace();
			}
		}
		
		public void CloseConnexion(){
			
			try {
				
				sock.close();
				
			} catch (IOException e) {
				e.printStackTrace();
			}
		}


		public String getDonnee() {
			return donnee;
		}


		public void setIDtag(String dtag) {
			IDtag = dtag;
		}


		public void setMode(char mode) {
			this.mode = mode;
		}


		public char getMode() {
			return mode;
		}


}