Partage
  • Partager sur Facebook
  • Partager sur Twitter

[QT]Trop de socket tue les sockets ?...

Ca marche si y'en a peu... O_o

Sujet résolu
    5 mai 2008 à 22:09:24

    Bonjour !
    Je crée actuellement une application réseau TCP avec Qt, et j'essaye en ce moment de faire un client qui "scan" tous les PC d'un réseau local (de 192.168.1.1 à 192.168.1.255) en essayant d'y établir une connexion ; les rares adresses qui hébergent effectivement un serveur répondent, par un message qui sera reçu par le client.

    En ce moment, tout marche si le client ne sonde que quelques adresses Ip (la bonne et une ou deux).

    Si je lui dis de tout scanner, entre la bonne ip et 192.168.1.255, ça marche la première fois, mais dès que je ré-essaye dans le même programme ça plante (si je le ferme puis le relance, ça marche...)
    Et si je pars de 1, ou même d'une dizaine d'adresse ip avant la bonne, cela ne marche plus du tout...

    Voici mon interprétation :
    J'ai l'impression qu'après un certain nombre d'essais infructueux, plus aucune connexion ne marche : lorsque je teste tout de la bonne ip à 192.168.1.255, ça marche la première fois puis, puisque ça a testé plus de 100 autres, ça ne fait rien la fois suivante. Et si on commence directement à 1 par exemple, alors on n'a même pas le temps de passer par la bonne ip avant de déclencher ce truc.
    Bien entendu, je peux me planter totalement... Peut-être y a-t-il une limite au nombre de sockets que l'on peut ouvrir et que c'est pour cela que mon programme ne peut pas faire tout ce qu'il veut, ou je ne sais pas quoi d'autre...

    Si vous le voulez vraiment, je poste le code source ici en rar (la zone sensible se trouve dans window.cpp, ligne 248 : changer le 255 et le 0 au dessus par les valeurs entourant l'ip du serveur rend le tout un peu plus fonctionnel...
    http://dragons-masters.info/fichiers/p4.rar

    Sinon, si vous n'avez pas le courage de vous plonger dans mon foutoire (et je vous comprendrais) mais que vous connaissez un bon cours / tuto / explication / conseils / ruse de sioux pour faire ce genre de truc (lister des parties sur le réseau), je suis également preneur :D
    • Partager sur Facebook
    • Partager sur Twitter
      6 mai 2008 à 3:33:51

      Théoriquement, un ordinateur ne peut ouvrir qu'un nombre limité de sockets. Un truc: essaie de fermer un socket lorsque tu n'en a plus besoin...
      • Partager sur Facebook
      • Partager sur Twitter
        6 mai 2008 à 7:58:46

        Le problème, c'est que je ne sais si j'en ai besoin qu'après les avoir tous ouverts... :-S

        Si je connaissais le nombre exact de socket disponibles, je n'aurais qu'à scanner toutes les ip par bloc, en plusieurs coups, mais là je ne sais pas combien c'est (d'ailleurs, je pensais que c'était BEAUCOUP, comme 65535 ou quelque chose comme ça)
        • Partager sur Facebook
        • Partager sur Twitter
        Anonyme
          6 mai 2008 à 12:37:21

          Citation : Gyscos

          d'ailleurs, je pensais que c'était BEAUCOUP, comme 65535 ou quelque chose comme ça



          C'est le nombre de ports sur un ordianteur !
          • Partager sur Facebook
          • Partager sur Twitter
            6 mai 2008 à 13:43:27

            Oui, et je pensais que c'était également le nombre de socket que l'on pouvait ouvrir. Enfin bon.
            J'ai trouvé un moyen de m'en sortir avec les broadcast en Udp :D
            Un exemple dans la démo de QT utilise ça, donc je m'en suis inspiré.
            • Partager sur Facebook
            • Partager sur Twitter

            [QT]Trop de socket tue les sockets ?...

            × 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