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

API standards et tierces Android Discussion :

Problème socket Android


Sujet :

API standards et tierces Android

  1. #1
    Membre à l'essai
    Homme Profil pro
    Ingénieur Informatique
    Inscrit en
    Mai 2012
    Messages
    43
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur Informatique
    Secteur : Industrie

    Informations forums :
    Inscription : Mai 2012
    Messages : 43
    Points : 24
    Points
    24
    Par défaut Problème socket Android
    Bonjour je dois développer une application permettant d'envoyer une trame à un serveur. J'arrive a créer la connexion a mon serveur mais au moment de l'envoi, mon application s'arrête.
    Version Android : 4.1.2
    Téléphone : Samsung Galaxy S3

    Voila mon code :
    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
     
    	public void envoyerMessage()
    	{
    		// Création de l'objet de type socket : 
    		Socket socket;
     
    		//Creation des objets permettant la lecture et l'écriture :
    		BufferedReader in;
    		BufferedWriter out;
     
    		try 
    		{
     
    			  socket = new Socket(adresse,port);
     
    			  //Création des objets de lecture et d'écriture : 
    			  in = new BufferedReader(new InputStreamReader(socket.getInputStream()));
    			  out = new BufferedWriter(new OutputStreamWriter(socket.getOutputStream()));
     
    			  //Envoie de la trame au serveur: 
    			  out.write(trame);
     
    			  //On vide le flux d'envoie de donnees : 
    			  out.flush();
    			  Log.i("TcpClient", "sent: " + trame);
     
    			  String reponseServeur = in.readLine() + System.getProperty("line.separator");
    			  Log.i("TcpClient", "received: " + reponseServeur);
     
    			  socket.close();
     
    			  etatConnexion = 1;
     
    		} 
     
    		catch (UnknownHostException e) 
    		{
    			// TODO Auto-generated catch block
    			e.printStackTrace();
    			etatConnexion = 0;
     
    		} 
     
    		catch (IOException e) 
    		{
    			// TODO Auto-generated catch block
    			e.printStackTrace();
    			etatConnexion = 0;
    		}
    	}
    Merci de votre aide

  2. #2
    Expert éminent

    Homme Profil pro
    Ingénieur systèmes et réseaux
    Inscrit en
    Février 2007
    Messages
    4 253
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur systèmes et réseaux
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Février 2007
    Messages : 4 253
    Points : 7 618
    Points
    7 618
    Billets dans le blog
    3
    Par défaut
    Il manque des infos.... comme le LogCat (obligatoire si l'application 's'est arrêtée') , et le contexte d'appel de la fonction (par exemple "trame","addresse" et "port" ici ne sont pas définis).


    Sinon....


    Ne jamais utiliser e.printStackTrace(); mais préférer: Log.e("XXXXX","Erreur lors de xxxxxxx",e); (les xxxxx étant à remplacer par quelque chose de cohérent bien sur).

    D'autre part pourquoi catcher les exceptions (et ne pas simplement les propager) ? L'appelant de la fonction ne doit pas savoir qu'une exception a eu lieu ?

    Il me semble bizarre d'avoir au même niveau de données "trame" et "addresse" (conceptuellement ce devrait être dans deux objets séparés).


    etatConnexion = 0;
    etatConnexion = 1;
    Utiliser un enum pour définir une variable à états prédéfinis permet d'éviter pas mal de "bugs".
    N'oubliez pas de cliquer sur mais aussi sur si un commentaire vous a été utile !
    Et surtout

Discussions similaires

  1. Problème Socket Android
    Par Invité dans le forum API standards et tierces
    Réponses: 16
    Dernier message: 05/02/2014, 16h34
  2. Problème Socket
    Par karl2mil1 dans le forum C++Builder
    Réponses: 3
    Dernier message: 12/09/2005, 23h35
  3. Problème socket raw ? bizarre :~
    Par MonsieurAk dans le forum Windows
    Réponses: 2
    Dernier message: 12/07/2005, 14h12
  4. [MFC] Problème Socket + Connexion SQL
    Par BananaUltra3C dans le forum MFC
    Réponses: 6
    Dernier message: 20/05/2005, 16h41
  5. [Réseau] Problème socket
    Par neenee dans le forum Entrée/Sortie
    Réponses: 14
    Dernier message: 18/01/2005, 15h26

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