Annonce

Réduire
Aucune annonce.

Multi-client socket haute performance ?

Réduire
X
  • Filtre
  • Heure
  • Afficher
Tout nettoyer
nouveaux messages

  • Multi-client socket haute performance ?

    Bonjour,

    grand amateur de bot, j'ai actuellement pour idée de développer un programme pour faire tourner un maximum de bots sur celui-ci.

    J'ai deja développé un bot visant a automatiser la meme tache mais celui-ci avait pour but d'etre un minimum intelligent, user-friendly etc.. Il est codé en c#. Cette fois-ci j'aimerais plutot faire quelque chose de minimaliste mais en masse; récupérer des comptes dans un fichier texte, les connecter au serveur de jeu et les faire tourner sur une action simple.

    Cela m'offre l'opportunité de repartir de zero pour mon projet, et j'avais quelques questions afin de partir sur quelque chose de correct. Cela afin d'avoir la meilleure performance possible au niveau du multi-client en socket, et d'avoir une certaine stabilité de la connexion malgré le nombre. Je me suis déjà un peu renseigné mais c'est vrai que quand on tape "multi socket client" ont tombe surtout sur des trucs de serveur
    Voici mes principales interrogations :

    - Quel language vous semble le plus appropriée à la tâche ?
    - Sur ce langage, y a t-il des libs que vous me conseilleriez ?
    - Avez-vous des conseils sur la façon d'organiser mon projet, notamment au niveau du threading (mono/multi) ?

    Merci pour vos réponses

    Bonne soirée
    Dernière modification par Sadik, 16 juillet 2015, 21h04.
    Mon blog : http://rootsheep.info

  • #2
    Je dirais python et le module requests, vite fait comme cela, en plus de la simplicité à parser un fichier, je pense que c'est une solution solide...

    Au niveau du threading, j'utilise très peu (voir pas du tout), en fait avec python, il faudrait bosser sur le module multiprocessing, mais j'ai jamais fais !

    Le module concurrent pourrait aider aussi, python > 3.2 il me semble,

    Bref faut chercher, tester et voir si ça donne satisfaction. Je n'ai jamais créé de Bot dont le temps de traitement devait être limité.

    Commentaire


    • #3
      Bonjour,

      merci Fred pour ta réponse. Tout d'abord le module requests n'ira pas car j'ai oublié de preciser que ce sont des bots sockets TCP. (my bad)

      Python est en effet une solution, car je pense facilement trouver un module qui pourrait me convenir, mais est-ce que ca tiendra la route au niveau des performances ? Tenir 100+ sockets TCP de façon permanente et stables, sans ralentissements, freeze, lag, plantage de thread ? Car c'est vraiment ça la finalité, organiser tout le protocole propre à ce serveur, traduire toutes les classes messages etc.. va me prendre du temps (meme si je l'ai deja fait en c#), et j'ai pas envie de me planter sur le choix du langage et des solutions utilisées

      Le client original lui, est codé en as3.

      Bonne journée !
      Mon blog : http://rootsheep.info

      Commentaire


      • #4
        Python est en effet une solution, car je pense facilement trouver un module qui pourrait me convenir, mais est-ce que ca tiendra la route au niveau des performances ?
        Dans le cas où ça ne convient pas, python te permettra de concevoir et tester rapidement si c'est fonctionnel... Si au niveau des performances ça ne convient pas, il sera temps de changer de langage, par exemple le java me semblerait un bon compromis.

        Personnellement je n'ai jamais fais, je peux pas dire ce que ça vaut, mais bon faire du python, c'est pas prendre de risque dans le temps de codage

        Commentaire


        • #5
          Dans la même veine que Python, tu peux essayer en Ruby.

          Développement facile, socket/multithread facile.

          Au niveau des serveurs web, difficile de pas connaître la réputation de Rack.

          Et surtout en Ruby (comme en Python cela dit) t'aura un développement bien plus rapide que sur un autre langage, et dans ton projet ça me semble adapté.

          Switcher C# pour Java comme le propose Fred, c'est pas très pertinent il me semble.

          Commentaire


          • #6
            Salut,

            Personnellement, quand je lis ton post et que je vois les mots "bots multi-comptes socket", j'ai eu la mauvaise impression que tu cherchais à créer un bot

            sur un MMO, Dofus peut-être ?..

            L'idée d'un bot en elle-même n'est pas mauvaise, mais quand il s'agit d'intervenir dans des jeux franchement.. Tu fais partie d'une communauté,d'un forum de

            "hackers white hat", tu ne devrais pas perdre ton temps à créer des programmes qui te permettent de farm'.

            Et puis, nous sommes d'accord qu'un jeu c'est fait pour s'amuser, bien que la tendance soit au "je veux être le plus riche,le meilleur".

            Je me suis permis d'intervenir dans le post parce-que il y a quelques années de cela je joué aux MMO et les bot n'apporter

            rien d'autre que des ennuis et pourrisser le jeu, bien qu'ils rendent "heureux" leurs utilisateurs.
            Dernière modification par shirocen, 17 juillet 2015, 17h03.
            deux et deux font cinq

            Commentaire


            • #7
              Bonsoir,

              @shirocen : oui en effet, bot sur Dofus ahah. Mais je préfère contourner leur securite anti bot que contourner d'autres aspects de leur secu...Après oui ca peut gêner des joueurs mais on peut jamais gêner personne

              @int80h : Ce n'est pas un serveur web, par contre pour Ruby je note.

              Je pense je vais tenter de faire quelque chose en python ou ruby, à voir si implementer des choses telles que le RSA dans ces langages que je connais que tres peu sera chose aisée... Du bon apprentissage en perspective

              Le C pourrait-il être aussi une bonne option selon vous, bien que le dev soit plus long ?

              Merci a vous !
              Mon blog : http://rootsheep.info

              Commentaire


              • #8
                Envoyé par Sadik Voir le message
                Bonsoir,

                @shirocen : oui en effet, bot sur Dofus ahah. Mais je préfère contourner leur securite anti bot que contourner d'autres aspects de leur secu...Après oui ca peut gêner des joueurs mais on peut jamais gêner personne

                @int80h : Ce n'est pas un serveur web, par contre pour Ruby je note.

                Je pense je vais tenter de faire quelque chose en python ou ruby, à voir si implementer des choses telles que le RSA dans ces langages que je connais que tres peu sera chose aisée... Du bon apprentissage en perspective

                Le C pourrait-il être aussi une bonne option selon vous, bien que le dev soit plus long ?

                Merci a vous !
                Oui je connais très bien ton ancien projet, et j'ai une idée des nouveaux, c'était juste pour illustrer le fait que ça tient largement plus que 100 petites connexions...

                D'ailleurs de mémoire quelqu'un avait tenté un bot en Ruby...Namii peut-être, mais je suis franchement pas sûr là.

                Pour le C j'ai de gros doutes, déjà tu vas t'emmerder à simuler les class via des structures, et c'est vite moche pour un projet comme tu veux le faire, et surtout le temps de développement comme tu le dis oui.
                Le C++ serait plus adapté, surtout que tu connais déjà le C++ d'après ce qu'on peux lire sur ton blog.

                C'est pas pour rien que traditionnellement les bots D. sont en C# et Vb.net depuis le début => rapide au développement (riche framework derrière) et relativement facile à apprendre...

                Commentaire


                • #9
                  Bonsoir,

                  Un bot pour Dofus donc ^_^.

                  Peut-être que ce bot pourrait t'inspirer.

                  Sinon, pour ton projet en lui-même je pense que comme disait fred', Java serait le bon compromit.

                  C'est portable, pas trop bas niveau et super pour faire une interface sympa.
                  deux et deux font cinq

                  Commentaire


                  • #10
                    Envoyé par shirocen Voir le message
                    Bonsoir,

                    Un bot pour Dofus donc ^_^.

                    Peut-être que ce bot pourrait t'inspirer.

                    Sinon, pour ton projet en lui-même je pense que comme disait fred', Java serait le bon compromit.

                    C'est portable, pas trop bas niveau et super pour faire une interface sympa.
                    Passer du C# au Java ? C'est vraiment dommage de passer d'un bon langage + framework vers le Java qui est...bah c'est le Java quoi

                    Et pour info, c'est un faux site de Redox, qui est lui même maintenant fermé

                    Commentaire


                    • #11
                      Switcher C# pour Java comme le propose Fred, c'est pas très pertinent il me semble.
                      La portabilité ? La dernière fois où j'ai entendu parler du C# et sa portabilité, c'est sur le projet Mono (pas le temps de me renseigner pour savoir où ils en sont...) !

                      Après j'ai rien contre le C#, promis (Microsoft peut-être ?)!

                      @Sadik,

                      Faudrait un petit algorithme ou pseudo code pour qu'on puisse se rendre compte des difficultés et du temps de travail... As-tu vu des exemples de code dans un langage quelconque ?

                      Commentaire


                      • #12
                        @Shirocen : ahah, pas de soucis au niveau des bots dofus, ça fait un an que j'en programme, je connais bien le domaine. Le java... Hmm comme dit int80h passer du c# au java me parait pas tres utile, et quand tu parles de faire une interface sympa, justement, je ne veux pas d'interface. Là je veux quelque chose de minimaliste, qui restera en console, tres performant et stable. Pas dans la beauté de l'interface


                        @Fred : Ca reste assez complexe...

                        En gros ça donnerait :

                        Socket->Connexion a ip/port->Réception/Envoi des messages

                        Reception = Lecture binaire en orientation big endian : Lecture du header-> action selon son id (en c# j'utilise la reflection, mais un switch est tout aussi possible)

                        Envoi = Ecriture binaire en big endian, écriture du header + du message..

                        Message = Structure binaire, ni + ni-.
                        Au niveau de la crypto j'ai besoin d'un RSA customisé, et d'un AES pour la phase d'identification au serveur.

                        Une fois connecté ils font des actions mais c'est toujours sous la forme envoi/reception.

                        Chacune de ses sockets entrera dans une collection afin de pouvoir bien les manipuler.


                        Voila voila.

                        Merci pour vos réponses.
                        Dernière modification par Sadik, 17 juillet 2015, 19h45.
                        Mon blog : http://rootsheep.info

                        Commentaire


                        • #13
                          Envoyé par fred Voir le message
                          La portabilité ? La dernière fois où j'ai entendu parler du C# et sa portabilité, c'est sur le projet Mono (pas le temps de me renseigner pour savoir où ils en sont...) !

                          Après j'ai rien contre le C#, promis (Microsoft peut-être ?)!
                          Mono/Xamarin fonctionne très très bien maintenant, surtout depuis que le framework .net s'est ouvert.

                          Microsoft ont aussi le droit de faire du bon travail tu sais

                          Commentaire


                          • #14
                            Mono/Xamarin fonctionne très très bien maintenant, surtout depuis que le framework .net s'est ouvert.
                            Alors que cela ne tienne, restons en C#, pourquoi s'embêter ?

                            Microsoft ont aussi le droit de faire du bon travail tu sais
                            Ils progressent, ils progressent !

                            Commentaire


                            • #15
                              Mon code n'a pas la nécessité d'etre portable, sur ce point je m'en fous un peu ça restera sur ma machine de toute manière

                              @fred : j'ai edite mon last post bien que vous ayez repondu deux fois durant ce laps de temps ahah
                              Mon blog : http://rootsheep.info

                              Commentaire

                              Chargement...
                              X