Aller au contenu

communication socket java<->C


spcay

Sujets conseillés

J'ai un pti souci pour recuperer des donnees envoyer a partir d'un prog cgi a un autre prog en java. Je transmet un nom d'utilisateur par ex sur le prog en c en utilisant les socket , mais au moment de la recuperation des donnees transmises sur le prog en java , je reste bloqué sur .readLine().

Voici les progs et merci pour votre aide.

Prog cgi

---------

     
   /* Initialisation de l'interface "windows socket" */
   if(WSAStartup(MAKEWORD(2,0),&wsa_info) != 0)
           test_erreur("interface socket");

   /* Creation de la socket de communication */
   if((sock_comm=socket(AF_INET,SOCK_STREAM,0))==INVALID_SOCKET)
           test_erreur_socket("Creation socket de communication");

   printf("CREATION SOCKET ...OK  \n");

   /* Recuperation de l'adresse du serveur DB */
   if( (serveur_DB_distant=gethostbyname(nom_serveur_DB_distant))==NULL)
           test_erreur_socket("recuperation adresse seveur DB");

   memset(&addr_sock,0,sizeof(addr_sock));
   addr_sock.sin_family=AF_INET;
   addr_sock.sin_port=htons(numero_port);
   memcpy(&addr_sock.sin_addr,serveur_DB_distant->h_addr_list[0],serveur_DB_distant->h_length);

   /* Connexion avec la socket du serveur */
   if(connect(sock_comm,(struct sockaddr *)&addr_sock,sizeof(addr_sock))== SOCKET_ERROR)
           test_erreur_socket("connexion au serveur DB");

   printf("CONNEXION AU SERVEUR SQL ....OK\n");

   /* Envoie d'information vers ke serveur DB */
   
   strcpy(info,utilisateur);
   
   if(send(sock_comm,info,strlen(info),0) == SOCKET_ERROR )
           test_erreur_socket("envoie d'information au serveur DB");
   printf("Non d'utilisateur envoyer !!!\n");

prog java

-----------

public class ServeurDB { 
   private static final int NUM_PORT=7777;
     ServerSocket socketserveur;
     lecteur_db data;
     Vector resultat;
     Socket socket;
     
     InputStreamReader sinsr;
   BufferedReader sin;
   BufferedOutputStream soutbuf;
   DataOutputStream datasend;
   PrintWriter sout;    
   String utilisateur=null;
   
   
   DataInputStream ois;
   InputStream is;
     // Constructeur par defaut
     ServeurDB(){
         
         //data = new lecteur_db();
       //resultat = new Vector();
         
         // Traitement de la communication
       try
       {
           socketserveur = new ServerSocket(NUM_PORT);
           socket = null;
           System.out.print("Creation socket ...OK\n");
       }
       catch(Exception e)
       {
                   
           JOptionPane.showMessageDialog(null,"Erreur de sortie",
                                       "Message d'erreur",
                                         JOptionPane.INFORMATION_MESSAGE);
                   
           System.out.print("\nEtat de la pile :");e.printStackTrace();
           System.exit(0);
       }
       
   }//Fin du constructeur
   
   
   /*****************************************************************************/
   public void init() throws Exception
   {
       socket=socketserveur.accept();
       sinsr=new InputStreamReader(socket.getInputStream());
       datasend= new DataOutputStream(socket.getOutputStream());
       sin = new BufferedReader(sinsr);
       soutbuf=new BufferedOutputStream(socket.getOutputStream());
       sout=new PrintWriter(soutbuf);
       
       is = socket.getInputStream();
       ois = new DataInputStream(is);

   }
   
   
   /***************************************************************************/
   
   /***************************************************************************/
   
   public void finish() throws Exception
   {
       sinsr.close();
       datasend.close();
       sin.close();
       soutbuf.close();
       sout.close();
       socket.close();
   }
   
   /***************************************************************************/
   
   /********************************************************************************/
   
   public void boucle()
   {
       // Boucle d'attente du serveur
       try
       {
           //while(true)
           //{
               init();
               System.out.print("init ok \n");
               utilisateur = ois.readLine();
               System.out.print(" sin ok \n");
               System.out.print(utilisateur +" connecte \n");
               finish();
           //}
       }
       
       catch(Exception e)
       {
                   
           JOptionPane.showMessageDialog(null,"erreur lors de la boucle du serveur",
                                       "Message d'erreur",
                                         JOptionPane.INFORMATION_MESSAGE);
                   
           System.out.print("\nEtat de la pile :");e.printStackTrace();
           System.exit(0);
       }
   }
               
   
   public static void main(String argv[])
   {
       try
       {
           ServeurDB serv = new ServeurDB();
           serv.boucle();
           
       }
       
       catch(Exception e)
       {
           JOptionPane.showMessageDialog(null,"erreur dans main",
                                       "Message d'erreur",
                                         JOptionPane.INFORMATION_MESSAGE);
                   
           System.out.print("\nEtat de la pile :");e.printStackTrace();
           System.exit(0);
       }
   }// Fin de la fonction pricipale
   
       
}// Fin de la classe ServeurDB

Lien vers le commentaire
Partager sur d’autres sites

Veuillez vous connecter pour commenter

Vous pourrez laisser un commentaire après vous êtes connecté.



Connectez-vous maintenant
×
×
  • Créer...