Partage
  • Partager sur Facebook
  • Partager sur Twitter

Un petit problème de sockets... (envoi client vers serveur)

Sujet résolu
Anonyme
    15 avril 2012 à 21:28:11

    Hello,
    J'essaie d'établir une connexion socket avec un serveur existant mais je me heurte à un problème de taille : je n'arrive pas à envoyer de données :-°

    Voilà mon code utile (un peu raccourci pour conserver uniquement ce qui foire. Toutes les classes utilisées sont importées et le code complet compile) :
    public void connect() throws IOException {
    	/* Création de la socket principale */
    	try {
    		socketMainServer = new Socket();
    		socketMainServer.setKeepAlive(true);
    		socketMainServer.connect(new InetSocketAddress(ipMainServer, portMainServer), timeout);
    	} catch(UnknownHostException e) {
    		System.out.println(e.getMessage());
    	} catch(IOException e) {
    		System.out.println(e.getMessage());
    	}
    
    	try {
    		/* Ouverture des flux d'entrée/sortie de la socket principale */
    		socketMainServerOut = new DataOutputStream(socketMainServer.getOutputStream());
    
    		/* Envoi du paquet */
    		socketMainServerOut.writeShort(42);
    		socketMainServerOut.flush();
    	} catch(IOException e) {
    		System.out.println(e.getMessage());
    	}
    }
    

    Voyez la ligne : socketMainServerOut.writeShort(42);, quand je scanne l'exécution du tout avec Wireshark, que cette ligne soit là ou pas le résultat est exactement le même. J'en déduis que l'envoi ne se fait pas.

    Quelqu'un aurait une idée du problème ? Si d'autres infos sont nécessaires je les ajouterai.

    Merci d'avance.
    • Partager sur Facebook
    • Partager sur Twitter
      15 avril 2012 à 21:49:23

      Tu as essayé de voir côté serveur si les données arrivaient ?
      • Partager sur Facebook
      • Partager sur Twitter
      ⚙️ Une solution simple règle le problème ; une solution compliquée en crée un nouveau.
      Anonyme
        15 avril 2012 à 22:12:26

        Je n'ai pas accès au serveur, c'est un script pour un bot. En réalité j'ai déjà fait le script en PHP et j'essaie de le convertir en Java. Pour voir si les paquets sont envoyés je n'ai pas d'autres moyens que d'utiliser Wireshark, à moins de tenter de faire la connexion complète du bot à l'aveuglette en espérant que ça fonctionne finalement x)
        • Partager sur Facebook
        • Partager sur Twitter
        Anonyme
          17 avril 2012 à 13:17:58

          Personne n'aurait une petite idée ? ^^
          A priori je pars sur l'idée que ma socket est "incorrecte" et que le serveur ferme la connexion prématurément, mais j'ai du mal à cerner l'origine de ce problème.
          • Partager sur Facebook
          • Partager sur Twitter
            17 avril 2012 à 14:40:31

            Tu peux toujours avoir l'erreur s'il y en a une avec la méthode :

            if(socketMainServerOut.checkError())
            {
            throw new Exception("Error transmitting data.");
            }

            Maintenant tu peux aussi vérifié si l'adresse ip est bonne ( parfois c'est tout bête mais bon, le port )
            • Partager sur Facebook
            • Partager sur Twitter
            Anonyme
              17 avril 2012 à 16:41:47

              L'IP et le port étaient bons, j'ai finalement réussi à faire fonctionner l'envoi en ajoutant un BufferedOutputStream (socketMainServerOut = new DataOutputStream(new BufferedOutputStream(socketMainServer.getOutputStream()));).

              Merci à tous.
              • Partager sur Facebook
              • Partager sur Twitter

              Un petit problème de sockets... (envoi client vers serveur)

              × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
              × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
              • Editeur
              • Markdown