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 :

Socket magique sous AVD


Sujet :

API standards et tierces Android

  1. #1
    Membre averti
    Inscrit en
    Février 2010
    Messages
    12
    Détails du profil
    Informations forums :
    Inscription : Février 2010
    Messages : 12
    Par défaut Socket magique sous AVD
    Bonjour,

    Je rencontre un problème assez gênant et je voudrais savoir si ce problème est propre à Android ou si cela vient de l'AVD :

    J'utilise une connexion TCP via Socket pour envoyer des données à un serveur, cependant je n'arrive pas à savoir si la connexion avec le serveur a été perdu car celui-ci devient inaccessible ...

    J'ai plus ou moins tout essayé en sachant qu'il n'est pas envisageable que le serveur envoi des données dans cette solution. Pour faire simple meme si j'envois mes données en bytes via un SocketChannel.write() il y'a 0 exceptions et le nombre de bytes envoyées est conforme alors que le serveur n'est meme plus allumé .... Le SelectionKey de mon SocketChannel me dit qu'elle est prête à écrire, enfin tout coté client indique qu'il est capable de transmettre des données dans une connexion inexistante !

    J'aimerais avoir des avis, car actuellement je n'ai pas encore de device Android donc obligé d'être sous AVD, donc soit je considere que ce problème vient d'AVD et que je continu à développer en Java ma gestion de connexion ou je fais ma gestion de connexion en C/C++ que j'utiliserais via JNI avec le reste de mon application.

    Merci !

  2. #2
    Membre Expert
    Avatar de yotta
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Septembre 2006
    Messages
    1 088
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Technicien maintenance
    Secteur : Industrie

    Informations forums :
    Inscription : Septembre 2006
    Messages : 1 088
    Par défaut Des précisions s.v.p.
    Bonjour,

    Comment créé-vous votre ScoketChannel. Car une nouvelle instance de cette classe se récupère en état non connecté. Avez-vous invoqué la méthode connect(SocketAddress remote) de votre SocketChannel avant d'envoyer vos données, et à l'issu de l'envoie des données, avez-vous invoqué la méthode finishConnect() ???
    Une technologie n'est récalcitrante que par ce qu'on ne la connait et/ou comprend pas, rarement par ce qu'elle est mal faite.
    Et pour cesser de subir une technologie récalcitrante, n'hésitez surtout pas à visiter les Guides/Faq du site !

    Voici une liste non exhaustive des tutoriels qui me sont le plus familiers :
    Tout sur Java, du débutant au pro : https://java.developpez.com/cours/
    Tout sur les réseaux : https://reseau.developpez.com/cours/
    Tout sur les systèmes d'exploitation : https://systeme.developpez.com/cours/
    Tout sur le matériel : https://hardware.developpez.com/cours/

  3. #3
    Membre averti
    Inscrit en
    Février 2010
    Messages
    12
    Détails du profil
    Informations forums :
    Inscription : Février 2010
    Messages : 12
    Par défaut
    C'est très facile, suffit de faire SocketChannel.open() en static qui retourne un nouveau SocketChannel non connecté, vous pouvez aussi appelez cette méthode avec le SocketAdress en paramètre pour obtenir un SocketChannel connecté, en effet mySocket.getChannel() sur Android retourne toujours null, enfin moi c'est pas un soucis, ma connexion marche parfaitement, mes données passe c'est juste que mon application fonctionne comme si de rien n'était et a l'impression de réussir a envoyé les données même si la connexion a été perdu entre temps, mais j'ai aucun soucis a par ça, je sais juste pas quand ma connexion est tombé a cause du serveur (je sais detecté si ça merde coté client). Sinon finishConnect permet juste de savoir si la connexion c'est bien passé et qu'elle est terminé, enfin oui je verifie bien que mon SocketChannel est bien connecté avant de faire quoi que ce soit, comme j'ai dis c'est juste que je sais pas si ma connexion est morte (je rappel aussi que dans ma solution le serveur n'enverra jamais de données, donc une resolution de mon problème basé la dessus est impossible)

  4. #4
    Membre averti
    Inscrit en
    Février 2010
    Messages
    12
    Détails du profil
    Informations forums :
    Inscription : Février 2010
    Messages : 12
    Par défaut Le pourquoi du problème !
    Bon j'ai ma réponse, d'après Google, c'est l'architecture de l'AVD qui veut ça, les sockets ont un serveur intermediaire dans la VM à ce qu'il parait, donc si le "vrai" serveur deconnecte l'intermediaire lui non, et ça impacte pas l'application, donc intestable via AVD. Le problème ne vient pas d'Android c'est le principal ! Je pense que ça pourrait intérésser quelques personnes ...

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

Discussions similaires

  1. [FLASH][SOCKET] XMLsocket sous Flash
    Par Muetdhiver dans le forum Dynamique
    Réponses: 3
    Dernier message: 29/10/2009, 11h38
  2. socket bind() sous linux
    Par sebatlante dans le forum Réseau
    Réponses: 10
    Dernier message: 21/04/2009, 09h57
  3. Socket PHP sous Debian
    Par sourize dans le forum Langage
    Réponses: 1
    Dernier message: 16/06/2008, 18h53
  4. Programmation de socket linux sous windows
    Par neuro6 dans le forum Autres éditeurs
    Réponses: 5
    Dernier message: 16/10/2007, 18h35
  5. Socket PHP sous windows
    Par souko dans le forum Langage
    Réponses: 4
    Dernier message: 25/07/2007, 10h08

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