BIBLIOTHÈQUE PERMETTANT D'UTILISER LES SOCKETS DE MANIÈRE TRANSPARENTE QU'ELLES
anonyme_man_in_this_world
Messages postés161Date d'inscriptionsamedi 25 juin 2005StatutMembreDernière intervention 1 août 2006
-
24 avril 2006 à 22:34
wadcyr8_197
Messages postés23Date d'inscriptionvendredi 24 novembre 2000StatutMembreDernière intervention 2 septembre 2007
-
18 juil. 2007 à 09:24
Cette discussion concerne un article du site. Pour la consulter dans son contexte d'origine, cliquez sur le lien ci-dessous.
wadcyr8_197
Messages postés23Date d'inscriptionvendredi 24 novembre 2000StatutMembreDernière intervention 2 septembre 2007 11 juil. 2007 à 09:45
toujours pas de nouvelles ?
wadcyr8_197
Messages postés23Date d'inscriptionvendredi 24 novembre 2000StatutMembreDernière intervention 2 septembre 2007 3 juil. 2007 à 16:38
Salut !
je te relance, au risque d'être un peu lourd, pour savoir où tu en étais de tes modifications ? Parce que j'ai adapté celui que j'ai récupéré à mon utilisation, mais disons que c'est pas très propre et pas très C++ :D
turnerom
Messages postés492Date d'inscriptionsamedi 10 juillet 2004StatutMembreDernière intervention12 janvier 20121 19 juin 2007 à 10:01
oui
wadcyr8_197
Messages postés23Date d'inscriptionvendredi 24 novembre 2000StatutMembreDernière intervention 2 septembre 2007 19 juin 2007 à 08:35
Autre petite question, est ce que la nouvelle version sur laquelle tu bosses prend en charge les sockets côté serveur. je pense notamment aux fonctions bind et listen parce que ça n'est pas le cas sur celle-ci et je m'arrache un peu les cheveux pour l'aspect transparent unix/windows vu que je ne connais pas le fonctionnement sous windows !
wadcyr8_197
Messages postés23Date d'inscriptionvendredi 24 novembre 2000StatutMembreDernière intervention 2 septembre 2007 15 juin 2007 à 18:26
ok, parfait, j'ai hate quelle sorte, je vais commencer à m'en servir dans le cadre de mon stage pour de la communication telnet avec un lecteur RFID :d
turnerom
Messages postés492Date d'inscriptionsamedi 10 juillet 2004StatutMembreDernière intervention12 janvier 20121 15 juin 2007 à 18:16
Si si bien sur, la nouvelle version le fait !
Cette version est une biblio que j'avais dans le cadre d'un TP, il y'a de cela bien longtemps maintenant (j'en était à mes début de prog :D). La future version est de tout bien de vue bien meilleure.
wadcyr8_197
Messages postés23Date d'inscriptionvendredi 24 novembre 2000StatutMembreDernière intervention 2 septembre 2007 15 juin 2007 à 18:02
ok, cool, merci bien !
juste une question, j'ai vu que tu gérais le recv() en caractère par caractère ? Mes connaissances en C++ sont toutes neuves, mais n'y a-t-il pas possibilité de gérer ça avec un string pour qu'il reçoivent un message complet directement ?
turnerom
Messages postés492Date d'inscriptionsamedi 10 juillet 2004StatutMembreDernière intervention12 janvier 20121 15 juin 2007 à 17:32
oui, je suis en train de corriger les derniers bugs. Je vais essayer de la poster avant la fin du mois.
wadcyr8_197
Messages postés23Date d'inscriptionvendredi 24 novembre 2000StatutMembreDernière intervention 2 septembre 2007 15 juin 2007 à 16:13
salut,
merci pour cette petite bibliothèque qui me simplifie bien la vie.
par contre j'ai lu que tu l'avais refaite en C++ pur et que tu devais la poster. Malheureusement je n'arrive pas à mettre la main dessus, l'as tu fait finalement ?
merci
Wad
lepiratox
Messages postés7Date d'inscriptionsamedi 24 février 2007StatutMembreDernière intervention25 mars 2014 24 févr. 2007 à 21:57
merciiii
turnerom
Messages postés492Date d'inscriptionsamedi 10 juillet 2004StatutMembreDernière intervention12 janvier 20121 8 oct. 2006 à 20:28
Oui, en effet, cette source n'est pas de toute première jeunesse. J'ai tout refait en C++ de manière bien plus otimisé.
Je la posterai bientot.
cs_crunch117
Messages postés7Date d'inscriptiondimanche 22 mai 2005StatutMembreDernière intervention16 juillet 2007 7 oct. 2006 à 11:40
Les + :
- Commentaires présent, ce qui est énorme ;)
je trouve cette source très basique et mal conçue pour plusieurs raisons :
Les - :
- c'est un joyeux mélange de C et de C++ avec des char * et std::string dans tous les sens
- aucune encapsulation véritable des fonctions de communication, qui risquent plus de compliquer les librairies socket plutot que de les simplifiées
- il y a quelque chose (qui n'est pas très grave mais qui est souvent récurrent), c'est aussi un mixage de deux langages : français / anglais. Par exemple on a à plusieurs endroits des variables "temp" et plus loin "erreur" puis ensuite "tmp", "ret" puis "retour", autant dire que si tu veux présenter ta source à un étranger, il va perdre un temps fou à apprendre l'anglais s'il ne connait pas et ensuite le français, qui est bien plus compliqueé en comparaison des langages de programmation.
- WSAGetLastError() n'est, je crois non portable.
- La gestion d'erreurs est désastreuse : joyeux mélange de throw (int), avec aucune spécification , avec des codes de retours de fonctions non définies en constantes entre les fonctions et ses utilisateurs mais c'est parceque tu n'as pas fait de choix clairs.
- "using namespace" est en effet assez dangereux, utilise des alias (using std::(object,class)), l'espace de nom global, surtout en C++, ne doit pas être polluer à cause de fichiers en-têtes
Si tu veux améliorer ta source, et son but, tu devrais (toujours selon moi) :
- Choisir entre C et C++, programmation structurale et programmation objet.
- Choisir le langage dans lequel tu veux présenter tes sources et AUSSI les commentaires
- Réaliser un minimum de conception
- Utiliser un maximum des constantes
- Encapsuler les fonctions dans une classe avec une interface protégée
- Définir l'interface de chaque fonction
Je ne m'adresse pas seulement à toi mais à tous les débutants en C/C++ car ils n'ont pas choisi des langages de trop haut niveau, et que si ils veulent faire quelque chose de propre, ils devraient prendre de bonnes habitudes.
Si des gens ont d'autres suggestions...
dPompei2
Messages postés55Date d'inscriptionsamedi 27 mars 2004StatutMembreDernière intervention 1 septembre 2006 29 avril 2006 à 13:44
c'est pas mal, mais tu disais que tu l'a faite par "besoin", alors juste une question: pourquoi t'avait pas utilisé la SDL_net ?
sinon, elle a l'air bien ta lib ;)
turnerom
Messages postés492Date d'inscriptionsamedi 10 juillet 2004StatutMembreDernière intervention12 janvier 20121 26 avril 2006 à 18:37
Oui en effet, j'utilise les string plutot que des char* pour plus de facilité, quant aux cout et cerr on peut aisément les remplacer par des printf(...) et fprintf(stderr, ...). Par contre les exceptions ne pourrons plus être utilisées.
Je travaille actuellement sur une version purement C++ orientée objets (du C++ quoi ;D), qui sera je pense, très puissante et simple à utiliser avec la possibilité de rajouter des protocoles autres que TCP et UDP facilement.
Je la posterai quand je l'aurai terminé.
w&s
anonyme_man_in_this_world
Messages postés161Date d'inscriptionsamedi 25 juin 2005StatutMembreDernière intervention 1 août 2006 26 avril 2006 à 17:52
"using namespace std;"
oui mais est ce vraiment obligatoire ?
je vois que le code peut etre aisement convertit en C ainsi il
sera utilisé en C/C++ .
cs_krust
Messages postés140Date d'inscriptionmercredi 3 juillet 2002StatutMembreDernière intervention19 novembre 2006 25 avril 2006 à 15:41
Ok, je vois ce que tu veux dire par transparent maintenant. C'est juste pour éviter un reverse engineering trop aisé.
turnerom
Messages postés492Date d'inscriptionsamedi 10 juillet 2004StatutMembreDernière intervention12 janvier 20121 25 avril 2006 à 14:45
| vire l'usage des #define TCP et UDP, puisque, j'imagine, on peut avoir besoin des deux à la
| fois ds un programme, non? c'est dommage de se limiter si ta lib gère les deux :)
| --> Oui pourquoi pas, je vais voir ca !
----> C'est fait.
cs_Kirua
Messages postés3006Date d'inscriptiondimanche 14 avril 2002StatutMembreDernière intervention31 décembre 2008 25 avril 2006 à 11:58
Que de dynamisme, ça fait plaisir :D J'attends la suite ^_^.
turnerom
Messages postés492Date d'inscriptionsamedi 10 juillet 2004StatutMembreDernière intervention12 janvier 20121 25 avril 2006 à 11:52
|pourquoi tu le classifie parmi des codes C++ et non pas C
--> Voir reponse de Kirua ;D
| using namespace std;
| qui d'ailleurs ne devrait jamais apparaître dans un en-tête (.h , .hpp, .hh)
| c'est assez important, puisque ts les programmes qui inclueront ta lib verront le namespace std
| automatiquement (et pas forcément consciemment) mis dans le namespace global (façon de parler).
--> En effet, merci c'est corrigé.
| ce serait bien que tu fasses une version encapsulée (classes)
--> J'y travaille
| vire l'usage des #define TCP et UDP, puisque, j'imagine, on peut avoir besoin des deux à la
| fois ds un programme, non? c'est dommage de se limiter si ta lib gère les deux :)
--> Oui pourquoi pas, je vais voir ca !
cs_Kirua
Messages postés3006Date d'inscriptiondimanche 14 avril 2002StatutMembreDernière intervention31 décembre 2008 25 avril 2006 à 11:33
à cause de ceci:
using namespace std;
qui d'ailleurs ne devrait jamais apparaître dans un en-tête (.h , .hpp, .hh)
c'est assez important, puisque ts les programmes qui inclueront ta lib verront le namespace std automatiquement (et pas forcément consciemment) mis dans le namespace global (façon de parler).
sinon, vrmnt intéressant d'avoir codé ça, ce serait bien que tu fasses une version encapsulée (classes) et que tu vire l'usage des #define TCP et UDP, puisque, j'imagine, on peut avoir besoin des deux à la fois ds un programme, non? c'est dommage de se limiter si ta lib gère les deux :)
anonyme_man_in_this_world
Messages postés161Date d'inscriptionsamedi 25 juin 2005StatutMembreDernière intervention 1 août 2006 24 avril 2006 à 22:34
ça a l'air d'etre pas mal cepandant pourquoi tu le
18 juil. 2007 à 09:24
16 juil. 2007 à 11:42
http://www.cppfrance.com/code.aspx?ID=43473
11 juil. 2007 à 09:45
3 juil. 2007 à 16:38
je te relance, au risque d'être un peu lourd, pour savoir où tu en étais de tes modifications ? Parce que j'ai adapté celui que j'ai récupéré à mon utilisation, mais disons que c'est pas très propre et pas très C++ :D
19 juin 2007 à 10:01
19 juin 2007 à 08:35
15 juin 2007 à 18:26
15 juin 2007 à 18:16
Cette version est une biblio que j'avais dans le cadre d'un TP, il y'a de cela bien longtemps maintenant (j'en était à mes début de prog :D). La future version est de tout bien de vue bien meilleure.
15 juin 2007 à 18:02
juste une question, j'ai vu que tu gérais le recv() en caractère par caractère ? Mes connaissances en C++ sont toutes neuves, mais n'y a-t-il pas possibilité de gérer ça avec un string pour qu'il reçoivent un message complet directement ?
15 juin 2007 à 17:32
15 juin 2007 à 16:13
merci pour cette petite bibliothèque qui me simplifie bien la vie.
par contre j'ai lu que tu l'avais refaite en C++ pur et que tu devais la poster. Malheureusement je n'arrive pas à mettre la main dessus, l'as tu fait finalement ?
merci
Wad
24 févr. 2007 à 21:57
8 oct. 2006 à 20:28
Je la posterai bientot.
7 oct. 2006 à 11:40
- Commentaires présent, ce qui est énorme ;)
je trouve cette source très basique et mal conçue pour plusieurs raisons :
Les - :
- c'est un joyeux mélange de C et de C++ avec des char * et std::string dans tous les sens
- aucune encapsulation véritable des fonctions de communication, qui risquent plus de compliquer les librairies socket plutot que de les simplifiées
- il y a quelque chose (qui n'est pas très grave mais qui est souvent récurrent), c'est aussi un mixage de deux langages : français / anglais. Par exemple on a à plusieurs endroits des variables "temp" et plus loin "erreur" puis ensuite "tmp", "ret" puis "retour", autant dire que si tu veux présenter ta source à un étranger, il va perdre un temps fou à apprendre l'anglais s'il ne connait pas et ensuite le français, qui est bien plus compliqueé en comparaison des langages de programmation.
- WSAGetLastError() n'est, je crois non portable.
- La gestion d'erreurs est désastreuse : joyeux mélange de throw (int), avec aucune spécification , avec des codes de retours de fonctions non définies en constantes entre les fonctions et ses utilisateurs mais c'est parceque tu n'as pas fait de choix clairs.
- "using namespace" est en effet assez dangereux, utilise des alias (using std::(object,class)), l'espace de nom global, surtout en C++, ne doit pas être polluer à cause de fichiers en-têtes
Si tu veux améliorer ta source, et son but, tu devrais (toujours selon moi) :
- Choisir entre C et C++, programmation structurale et programmation objet.
- Choisir le langage dans lequel tu veux présenter tes sources et AUSSI les commentaires
- Réaliser un minimum de conception
- Utiliser un maximum des constantes
- Encapsuler les fonctions dans une classe avec une interface protégée
- Définir l'interface de chaque fonction
Je ne m'adresse pas seulement à toi mais à tous les débutants en C/C++ car ils n'ont pas choisi des langages de trop haut niveau, et que si ils veulent faire quelque chose de propre, ils devraient prendre de bonnes habitudes.
Si des gens ont d'autres suggestions...
29 avril 2006 à 13:44
sinon, elle a l'air bien ta lib ;)
26 avril 2006 à 18:37
Je travaille actuellement sur une version purement C++ orientée objets (du C++ quoi ;D), qui sera je pense, très puissante et simple à utiliser avec la possibilité de rajouter des protocoles autres que TCP et UDP facilement.
Je la posterai quand je l'aurai terminé.
w&s
26 avril 2006 à 17:52
oui mais est ce vraiment obligatoire ?
je vois que le code peut etre aisement convertit en C ainsi il
sera utilisé en C/C++ .
25 avril 2006 à 15:41
25 avril 2006 à 14:45
| fois ds un programme, non? c'est dommage de se limiter si ta lib gère les deux :)
| --> Oui pourquoi pas, je vais voir ca !
----> C'est fait.
25 avril 2006 à 11:58
25 avril 2006 à 11:52
--> Voir reponse de Kirua ;D
| using namespace std;
| qui d'ailleurs ne devrait jamais apparaître dans un en-tête (.h , .hpp, .hh)
| c'est assez important, puisque ts les programmes qui inclueront ta lib verront le namespace std
| automatiquement (et pas forcément consciemment) mis dans le namespace global (façon de parler).
--> En effet, merci c'est corrigé.
| ce serait bien que tu fasses une version encapsulée (classes)
--> J'y travaille
| vire l'usage des #define TCP et UDP, puisque, j'imagine, on peut avoir besoin des deux à la
| fois ds un programme, non? c'est dommage de se limiter si ta lib gère les deux :)
--> Oui pourquoi pas, je vais voir ca !
25 avril 2006 à 11:33
using namespace std;
qui d'ailleurs ne devrait jamais apparaître dans un en-tête (.h , .hpp, .hh)
c'est assez important, puisque ts les programmes qui inclueront ta lib verront le namespace std automatiquement (et pas forcément consciemment) mis dans le namespace global (façon de parler).
sinon, vrmnt intéressant d'avoir codé ça, ce serait bien que tu fasses une version encapsulée (classes) et que tu vire l'usage des #define TCP et UDP, puisque, j'imagine, on peut avoir besoin des deux à la fois ds un programme, non? c'est dommage de se limiter si ta lib gère les deux :)
24 avril 2006 à 22:34
classifie parmi des codes C++ et non pas C .