IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Développement Web en Java Discussion :

Protocole TCP client serveur


Sujet :

Développement Web en Java

  1. #1
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Février 2016
    Messages
    14
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2016
    Messages : 14
    Points : 15
    Points
    15
    Par défaut Protocole TCP client serveur
    Bonjour,

    je suis actuellement sur le développement un protocole de communication TCP/IP en java et je rencontre quelques problèmes:

    Voici le code associé au travail que j'ai fais:

    Classe serveur

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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
     
    import java.net.*;
    import java.io.*;
     
    public class server
    {
        private static byte[]        _message = {'t','e','s','t'};
        private static int           _port;
        private static ServerSocket  _socket;
        private static byte[]        _start = {'s','t','a','r','t'};
     
        public static void main(String[] args)
        {
    	InputStream input = null;
    	OutputStream output = null;
     
            try
            {
                _port   = (args.length == 1) ? Integer.parseInt(args[0]) : 8080;
                _socket = new ServerSocket(_port);
     
                System.out.println("TCP server is running on " + _port + "...");
     
    	    int i = 0;
    	    int tmp = 0;
    	    byte[] var = new byte[10000];	    
     
    	    // Accept new TCP client
    	    Socket client       = _socket.accept();
    	    // Open input stream
    	    input = client.getInputStream();           
    	    // Open output stream
    	    output = client.getOutputStream();
     
    	    tmp = input.read();
    	    var[i] = (byte)tmp;
    	    System.out.println( var[i] );
     
    	    while(tmp != -1)
    		{
    		    tmp = input.read();
    			var[i] = (byte)tmp;
    		    System.out.println( var[i] );
    		    i++;
    		}
             client.close();
     
            }
            catch (IOException e)
    	    {
    		e.printStackTrace();
    	    }
            finally
            {
                try
                {
                    _socket.close();
    	    }
                catch (IOException e)
                {
                    e.printStackTrace(); 
                }
            }
        }
    }
    Classe client :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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
    import java.net.*;
    import java.io.*;
     
     
     
    class client
    {
        private static int    _port;
        private static Socket _socket;
     
        public static void main(String[] args)
        {
    	byte [] start = {'s','t','a','r','t'};
    	InputStream input = null;
    	OutputStream output = null;
            try
            {
                _port   = (args.length == 1) ? Integer.parseInt(args[0]) : 8080;
    	    InetAddress serveur = InetAddress.getByName("10.1.1.25");
    	    _socket = new Socket(serveur, _port);
     
     
    	    int i=0;
    	    int tmp = 0;
    	    byte[] var = new byte[100];
     
                // Open stream
                input = _socket.getInputStream();
    	    output = _socket.getOutputStream();
     
    	    output.write(start);
     
    	    tmp = input.read();
    	    //System.out.println( tmp );
    	    var[i] = (byte)tmp;
    	    //System.out.println( var[i] );
    	    i++;
     
     
            }
            catch (UnknownHostException e)
            {
                e.printStackTrace();
            }
            catch (IOException e)
            {
                e.printStackTrace();
            }
            finally
            {
                try
                {
                    input.close();
                    _socket.close();
                }
                catch (IOException e)
                {
                    e.printStackTrace();
                }
            }
        }
    }
    Lorsque le serveur est lancé, il attend la connexion d'un client. Le client lui transmet directement le message "start", à la réception de ce message, le serveur lui répond un message "test". Le problème que je rencontre est à ce niveau, le serveur reçoit bien le message start et ensuite tout se bloque. J'ai constaté que cela venait du client qui est lui dans une attente d'un message du serveur, mais je ne comprend pas pourquoi.

    Quelqu'un a une idée pour me dépanner?

    Merci d'avance

  2. #2
    Modérateur
    Avatar de Gugelhupf
    Homme Profil pro
    Analyste Programmeur
    Inscrit en
    Décembre 2011
    Messages
    1 320
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Analyste Programmeur

    Informations forums :
    Inscription : Décembre 2011
    Messages : 1 320
    Points : 3 740
    Points
    3 740
    Billets dans le blog
    12
    Par défaut
    J'ai jeté un coup d'oeil sur ton code client/serveur. Je ne sais même pas par où commencer . Le code de ton serveur par exemple, pourquoi dupliques-tu du code ? Tu effectues un premier read() puis un read() dans une boucle. Ton client pourquoi n'a-t-il pas de boucle, vu que tu lis octet par octet tu ne risques pas de recevoir "test" dans son intégralité, pire encore ton serveur n'envoie rien
    N'hésitez pas à consulter la FAQ Java, lire les cours et tutoriels Java, et à poser vos questions sur les forums d'entraide Java

    Ma page Developpez | Mon profil Linkedin | Vous souhaitez me contacter ? Contacter Gokan EKINCI

  3. #3
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Février 2016
    Messages
    14
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2016
    Messages : 14
    Points : 15
    Points
    15
    Par défaut
    salut,

    J'ai effectué les modifications liées aux remarques que tu m'as fait et j'ai enfin réussi à faire fonctionner mon client/serveur .
    Je te remercie pour le temps que tu as passé à y réfléchir !

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [TCP] Client / Serveur derrière un routeur
    Par webpsi dans le forum Entrée/Sortie
    Réponses: 6
    Dernier message: 11/06/2014, 12h27
  2. [SOCKET] TCP client/serveur
    Par hxh2008 dans le forum Réseau
    Réponses: 3
    Dernier message: 25/11/2011, 18h01
  3. Fin échange TCP client / serveur
    Par quikjean dans le forum Général Dotnet
    Réponses: 3
    Dernier message: 05/06/2009, 11h07
  4. [TCP] Client/Serveur avec les composants Indy
    Par bakaneko dans le forum C++Builder
    Réponses: 2
    Dernier message: 14/02/2007, 13h47

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo