C/C++ [Projet] Couche socket pour D²

  • Auteur de la discussion Anonymous
  • Date de début
A

Anonymous

Invité
#1
Bonsoir,

Je développe actuellement un couche socket de communication avec D², en C++, qui pourra servir plus tard à faire un bot socket.

Je ne sais pas encore pour le moment si ce sera opensource ou payant, le problème de l'opensource étant que ankama pourrait peut être se retourner contre moi si je diffuse le moyen d'utiliser leur auth. rsa quand ce sera fait, ou alors ça leur permettrait de fix plus vite, je sais pas trop ... et le payant bah c'est que malgré les efforts le C++ ça se décompile et ça se hack, donc useless. A voir donc.

Sinon j'ai déjà co-programmé un bot socket, il y a deux ans de cela, en .net.

Pour le moment le projet est toujours à un stade d'avancement très peu avancé, je tacherais de noter les fonctionnalités ici :

Progression
- Gestionnaire socket
- Gestionnaire packet : en cours ...
- Reader BigEndian
- Writer BigEndian
- Login serveur
- Connexion jeu : todo
- Implémenter les classes du jeu : en cours ...
- Développer une api : todo

Informations
- Utilise la librairie boost asio pour la gestion réseau ( portable ), le programme sera multi-plateforme


A des fins de test pour le moment le programme est en console, plus tard il sera déporté sur une librairie qui pourra être utilisée par des applications console/graphique.
 

ToOnS

Membre Actif
Inscrit
8 Avril 2009
Messages
974
Reactions
0
#2
A

Anonymous

Invité
#3
oui ça je le sais merci^^ ce qui me faudrait ce sont les infos envoyées par le serveur, que je puisse voir ce que je dois retrouver :)
je peux éventuellement le faire avec wpe pro, mais étant sous linux c'est juste super relou de changer de machine, de copier les machins etc :/
 

Geraff

Administrateur
Membre du personnel
Inscrit
13 Mars 2008
Messages
564
Reactions
0
#4
opensource ne veut pas dire gratuit.

Attention !!
 

ToOnS

Membre Actif
Inscrit
8 Avril 2009
Messages
974
Reactions
0
#5
dans ce cas les infos c'est jamais les memes d'une connexion a l'autre
 
A

Anonymous

Invité
#6
Geraff a dit:
opensource ne veut pas dire gratuit.

Attention !!
Si je le met opensource ce sera sur github avec une license libre appropriée. Si je distribue le code avec un prix pour une redistribution, y'aura pas de bon samaritain pour me le payer :)
 

Geraff

Administrateur
Membre du personnel
Inscrit
13 Mars 2008
Messages
564
Reactions
0
#7
L'open source est un modèle qui est beaucoup basé sur la confiance et l'éthique des personnes.
Forcement il y a des leechers qui vont le récupérer. Mais tu peux avoir des bon samaritains quand même.

Après reste les procès...mais c'est chiant d'en arriver là.

Je pense qu'on a fait le tour du sujet niveau open source, c’était surtout pour casser une idée reçue de l'open source.
 
Inscrit
13 Mars 2013
Messages
9
Reactions
1
#8
Bon courage Munrek pour ce projet !!
Je connais correctement le C++ pour te dire que ça ne va pas être du gâteau, mais courage ! :)
 
A

Anonymous

Invité
#9
C'est moins prémaché que le C#, mais beaucoup plus instructif :)
 
A

Anonymous

Invité
#10
Cette idée de library C++ multiplateforme est excellente ! je songe à en faire une multiplateforme aussi (il me reste beaucoup à apprendre sur les bot Dofus ceci dit), néanmoins je te conseil le partage de tes sources, et pourquoi pas dans l'anonymat pour éviter les représailles, certes pour ankama c'est tout bénef', mais de l'autre côté, tu attires du monde pour maintenir ta library et t'aider dans son bon fonctionnement.
 
Inscrit
3 Novembre 2011
Messages
51
Reactions
0
#11
Pour les messages, tu fait du polymorphisme ?
 
A

Anonymous

Invité
#12
Mon code n'évolue pas beaucoup, je suis bloqué par le login RSA donc je n'ai pas implémenté cette partie encore.
 
Inscrit
3 Novembre 2011
Messages
51
Reactions
0
#13
Bah si, dans ton screen tu indique que tu reçois un HelloConnectMessage et tu affiche les valeurs, donc ton système de message est OP.
 
A

Anonymous

Invité
#14
Non, c'est une méthode dégueulasse dans la classe du PacketHandler pour le moment.
 
Inscrit
3 Novembre 2011
Messages
51
Reactions
0
#15
Ah, bah je te conseil de faire un truc propre pour les messages
Ta fait des conditions ?
Je te conseil le polymorphisme ^^
Je fais aussi en C++ et c'est super cette méthode, si ta autre chose de mieux, je suis preneur
 
A

Anonymous

Invité
#16
J'en suis vraiment pas à là pour le moment, c'est pas ma priorité. Tant que je ne trouve pas un moyen de faire un login complet, je ne récupère pas suffisamment de paquets à traiter pour pouvoir finaliser le BigEndian Reader/Writer, et faire la gestion des messages :S
 
Inscrit
3 Novembre 2011
Messages
51
Reactions
0
#17
okey ;)

Si tu veux : Skype -> nostrora
ce sera intéressant de discuté à propos de celà
 
A

Anonymous

Invité
#18
Beaucoup de travail sur le projet en ce moment, grâce au vacances, donc un petit message qui récapitule ce que j'ai fait ces derniers jours :

- Le SocketManager est désormais entièrement asynchrone, et la réception/envoi des messages fonctionne. Ca ne parait pas comme ça, mais cette partie du code m'a pris énormement de temps ( +/- une semaine de tests, réécritures, debug ... )
- Multi-threading géré par Boost
- Ajout des outils nécessaires pour gérer le cryptage RSA ( avec la lib openssl )
- La gestion des paquets commence à prendre forme, mais toujours à terminer

Premiers tests de login aux serveurs effectués hiers soirs, mais malheureusement pour le moment c'est un échec.
Je cherche toujours la cause, mais le serveur coupe la connexion pour paquet malformé, donc ça ne devrait pas être un soucis d'identifiants invalides ( et donc de cryptage RSA ? )
 
A

Anonymous

Invité
#19
- Correction d'une foultitude de bugs
- Login fonctionnel

[DEBUG] Packet id 10 of size 4 received
[DEBUG] Packet id 6314 of size 0 received
[DEBUG] Packet id 10 of size 4 received
[DEBUG] Packet id 22 of size 44 received
[DEBUG] Packet id 30 of size 730 received
Enorme merci à moonlight-angel, pour m'avoir aidé à débugger. Sans lui j'aurais probablement abandonné :)
 
A

Anonymous

Invité
#20
Un petit post pour signaler l'avancement du projet, avec un changement majeur, et non des moindres, une réécriture from scratch. Et un autre changement majeur, et non des moindres, le C++ a été abandonné au profit du langage D ( http://dlang.org/ ).

J'ai beaucoup appris en C++, mais je ne souhaite pas continuer avec, pour plusieurs raisons :
- Tout l'attirail de boost nécessaire à mettre en place pour faire fonctionner asio ( et encore je ne sais même pas encore trop comment c'est tombé en marche ... ) est trop contraignant, et aurait été un boulet à supporter pendant tout le développement. La dernière facétie du bordel était que je ne pouvais pas mettre un simple cout dans le code du socket manager sans provoquer des bad allocs mystérieux au démarrage. Ca ma vraiment soulé et j'ai senti que ça allait continuer :)
- Les pointeurs sont dangereux. Très dangereux.
- Je ne souhaitais pas utiliser Qt à la base, parce que faire du C++ avec Qt, ben c'est faire du Qt en fait. Seulement Qt résout énormement de problématiques réccurentes dans la construction d'un programme, comme par exemple les slots, les pointeurs, les types de données et leur place en mémoire en fonction des plateformes ... passer du temps à compenser ( en partie du moins ) ces manques est certes instructif sur le C++, mais rééllement casse couille, et je ne pense pas avoir le niveau nécessaire pour développer un projet de cet ambition en continuant à galérer et à perdre du temps comme ça.
- Le multiplateforme ( du moins, sans Qt ), est contraignant et difficile à mettre en place.

Je crois que c'est a peu près tout pour les causes, maintenant pourquoi le langage D ?
- C'est un langage moderne, efficace, et qui je pense est appelé à devenir très populaire dans les années qui suivent. Son créateur le résume très bien : « If a language can capture 90% of the power of C++ with 10% of its complexity, I argue that is a worthwhile tradeoff. »
- La librairie de base fournit une très large variété d'outils ( un truc utile par exemple, les conversions en native endian <-> big/little endian, parmis beaucoup d'autres trucs ), bien documentés et accessibles ( docs à la msdn sur le site de dlang.org )
- Pas de bytecode, le compilateur "traduit" directement le code en D vers l'assembleur. Il dispose des avantages du code managé de plus avec par exemple un garbage collector ( désactivable ), compile incroyablement vite et est rapide à l'éxecution.
- J'ai pu produire une version windows ( je développe sous linux ) sans difficultés, et sans modifier le code. Je n'ai pas de mac pour tester mais je ne doute pas que cela fonctionne, la librairie de base D en est la raison. La seule difficulte fut de linker correctement la lib openssl ( pour la gestion du RSA ).
- Syntaxe de style C#/Java, malgré quelques différences c'est très facile à appréhender.
- C'est 10'000 fois plus facile.

Voila voila, stay tuned.
 
Haut Bas