J'ai testé ton code, qui risque de m'être par ailleurs fortement utile, mais autant il passe parfaitement lors du lancement, autant pendant un lancement pas à pas sous gdb (code::blocks), il y a corruption possible de la pile ligne 1396 de servbaze.c (fonction log instruction free(args)), ce qui ne m'étonne pas d'ailleurs puisque tu essaye de libérer une variable non pointeur (peut être que ca se fait effectivement ? Mais ca m'étonne néanmoins)
Quelques remarques après avoir regardé le code (pas pu résister) :)
Concernant le code lui même :
1) modularise le code, tout dans un seul .c c'est assez indigeste
2) scinde les fonctions, certaines sont beaucoup trop grosses (comme traitement_reception)
Concernant les performances :
3) utilise des hash dans un switch plutôt que tous ces if(strcmp(args[0], ...))
4) utilise des hash table pour les clients / salons l'accès est quasi instantané comparé à une liste chainée (mais tu peux conserver des listes chainées pour les envois séquentiels des infos, vu qu'il faut de toute façon tout parcourir)
5) utilise les fonctions de winsock 2.2, select sous windows c'est pas top
Salut, je n'ai pas encore regardé le code vu que je ne suis pas sur mon PC actuellement, mais quand tu parles de Nebula tu parles du client que j'avais déposé sur delphifr (en tout cas ton screen y ressemble, tu utilises quel composant pour gérer les smileys) ? Çà fait plaisir de savoir que ce code n'est pas totalement tombé dans l'oubli :p
Petite info ayant lu les logs du serveur, en effet le serveur est en phase de test sur ma machine, le client va essayer de se connecter en premier lieu sur celui-ci, si il ne trouve pas le serveur il tente une connection dans le réseau local (192.169.1.3) puis pour finir si il ne trouve tj pas de serveur il tente une connection sur le localhost. donc pour tester en local bloquez les connections extérieures du client, su vous ne saver pas comment faire, déconnectez vous de l'internet. Les commentaires sont les bienvenus.
oups, les exécutables ne passent pas dans les archives... pour ceux qui connaissent le Client NEBULA est 100% compatible (sauf pour les liste d'amis et d'autres petits trucs) pour ceux qui désirent l'avoir me contacter par MP
24 avril 2007 à 13:15
3 févr. 2007 à 22:02
Concernant le code lui même :
1) modularise le code, tout dans un seul .c c'est assez indigeste
2) scinde les fonctions, certaines sont beaucoup trop grosses (comme traitement_reception)
Concernant les performances :
3) utilise des hash dans un switch plutôt que tous ces if(strcmp(args[0], ...))
4) utilise des hash table pour les clients / salons l'accès est quasi instantané comparé à une liste chainée (mais tu peux conserver des listes chainées pour les envois séquentiels des infos, vu qu'il faut de toute façon tout parcourir)
5) utilise les fonctions de winsock 2.2, select sous windows c'est pas top
3 févr. 2007 à 21:47
1 févr. 2007 à 07:55
23 janv. 2007 à 17:45