MK_SOCKET : UNE BIBLIOTHÈQUE COMPLÈTE ET TRÈS SIMPLE DE GESTION DE SOCKET TCP

cs_jean84 Messages postés 449 Date d'inscription jeudi 26 août 2004 Statut Membre Dernière intervention 5 mars 2009 - 3 janv. 2006 à 12:31
dnob700 Messages postés 44 Date d'inscription mardi 17 février 2004 Statut Membre Dernière intervention 5 novembre 2007 - 5 nov. 2007 à 19:51
Cette discussion concerne un article du site. Pour la consulter dans son contexte d'origine, cliquez sur le lien ci-dessous.

https://codes-sources.commentcamarche.net/source/35366-mk-socket-une-bibliotheque-complete-et-tres-simple-de-gestion-de-socket-tcp

dnob700 Messages postés 44 Date d'inscription mardi 17 février 2004 Statut Membre Dernière intervention 5 novembre 2007
5 nov. 2007 à 19:51
Advio ne peut pas compiler sous linux malheureusement.
A cette époque j'aimais bien réinventer la roue. Mais tu peut remplacer advio.h par et mettre des objet cin et cout là où il faut (il n'y a pas beaucoup de chose à changer), et ça devrait fonctionner.

Je mettrais à jour les exemples si j'y pense.
cs_metos Messages postés 168 Date d'inscription vendredi 18 janvier 2002 Statut Membre Dernière intervention 19 octobre 2009
5 nov. 2007 à 15:50
Salut,

quand je compile sous debian avec GCC l'exemple du client, j'ai les erreur suivante de compilation :
./advio.h:359: error: expected `)' before ‘&’ token
./advio.h:359: error: expected ‘,’ or ‘...’ before ‘&’ token
./advio.h:359: error: ‘SetHandler’ declared as function returning a function
./advio.h:359: error: expected ‘;’ before ‘)’ token
./advio.h:383: error: ISO C++ forbids declaration of ‘FILE’ with no type
./advio.h:383: error: expected ‘;’ before ‘*’ token

as-tu une idée pourquoi?
merci d'avance
dnob700 Messages postés 44 Date d'inscription mardi 17 février 2004 Statut Membre Dernière intervention 5 novembre 2007
29 juil. 2007 à 13:24
C'est très exactement inspiré du winsock de VB qui m'a manqué lorsque je suis passé au C.

En réalité, un seul thread est créé pour chaque socket mais pas plus. C'est peut-être déjà trop dans le cas d'un gros serveur, mais pour la plupart des petites applications ce n'est pas du tout un problème.
BumpMANN Messages postés 330 Date d'inscription jeudi 22 mai 2003 Statut Membre Dernière intervention 26 janvier 2009
29 juil. 2007 à 13:23
Ah non désolé, c'est moi qui ai jamais utilisé les threads et qui sait pas lire une fenêtre de sortie -__-; Ils se terminent bien au fur et a mesure, désolé, c'est donc vraiment nikel.
BumpMANN Messages postés 330 Date d'inscription jeudi 22 mai 2003 Statut Membre Dernière intervention 26 janvier 2009
29 juil. 2007 à 13:16
En revanche je trouve que y'a un gros problème.... a plein de fonctions ça crée des threads, okay, mais ca les quitte jamais. si on fait un serveur avec ça, ça va vite exploser...
BumpMANN Messages postés 330 Date d'inscription jeudi 22 mai 2003 Statut Membre Dernière intervention 26 janvier 2009
29 juil. 2007 à 08:24
J'aime bien, simple, pratique, nikel... ca me fait penser aux winsocks de vb ^^
cs_aklim Messages postés 2 Date d'inscription vendredi 2 juillet 2004 Statut Membre Dernière intervention 3 juillet 2007
3 juil. 2007 à 14:13
OK, j'ai trouvé
Celà venait du fichier .lib qui n'était pas compatible avec VS6. J'ai tout mis dans le projet et maintenant çà roule.
Merci pour la source
cs_aklim Messages postés 2 Date d'inscription vendredi 2 juillet 2004 Statut Membre Dernière intervention 3 juillet 2007
2 juil. 2007 à 17:44
Bonjour, merci pour ta classe, c'est tout à fait ce que je recherchais. Mais j'ai actuellement un pb de link sous VS6 qui me retourne ce message :

LINK : warning LNK4098: defaultlib "LIBCMT" conflicts with use of other libs; use /NODEFAULTLIB:library
mk_socket.lib(mk_socket.obj) : error LNK2001: unresolved external symbol ___security_cookie
mk_socket.lib(mk_socket.obj) : error LNK2001: unresolved external symbol @__security_check_cookie@4
socketcpp___Win32_Debug/socketcpp.exe : fatal error LNK1120: 2 unresolved externals
...

As tu idée ?
dnob700 Messages postés 44 Date d'inscription mardi 17 février 2004 Statut Membre Dernière intervention 5 novembre 2007
23 mai 2007 à 21:40
Voila, j'ai corrigé le bogue qui causait un segfault lors de la création de thread sous linux (je suppose que c'est ce que worms4 a modifié aussi).

En prime, il devrait bientôt y avoir une nouvelle version beaucoup plus moderne et plus propre.
dnob700 Messages postés 44 Date d'inscription mardi 17 février 2004 Statut Membre Dernière intervention 5 novembre 2007
23 mai 2007 à 21:35
Voila, j'ai corrigé le bogue qui causait un segfault lors de la création de thread sous linux (je suppose que c'est ce que worms4 a modifié aussi).

En prime, il devrait bientôt y avoir une nouvelle version beaucoup plus moderne et plus propre.
worms4 Messages postés 27 Date d'inscription jeudi 29 avril 2004 Statut Membre Dernière intervention 20 mars 2007
20 mars 2007 à 13:33
J'ai débugguer la librairie pour qu'elle ne plante plus sous linux. ici

Et voici un exemple ou l'on trouve une version du client et du server qui compile sous nunux. ici
worms4 Messages postés 27 Date d'inscription jeudi 29 avril 2004 Statut Membre Dernière intervention 20 mars 2007
9 mars 2006 à 11:35
Salut serait t'il possible de rajouter une petite doc du descriptif de chaque fonction de ta classe pour bien comprendre se qu'elle font
noSnoR Messages postés 62 Date d'inscription samedi 5 mars 2005 Statut Membre Dernière intervention 11 avril 2006
6 janv. 2006 à 20:58
Barf, désolé pour le post inutile, je n'avais pas pris le temps de lire le dernier post...
noSnoR Messages postés 62 Date d'inscription samedi 5 mars 2005 Statut Membre Dernière intervention 11 avril 2006
6 janv. 2006 à 20:54
Pareil que Katsankat, un petit exemple m'aiderait assez...
dnob700 Messages postés 44 Date d'inscription mardi 17 février 2004 Statut Membre Dernière intervention 5 novembre 2007
6 janv. 2006 à 15:47
j'ai rajoutté dans l'archive 3 petit progs d'exemple : un programme pour interoger le serveur whois des noms en .eu et un petit client et serveur de chat. Pour ces dernier néanmoins il faut réécrire la gestions des entrées sorties avec iostream ou équivalent pour ceux qui voudrait le compilé sous linux, ou sous windows mais sans la lib advio.
katsankat Messages postés 571 Date d'inscription vendredi 30 décembre 2005 Statut Membre Dernière intervention 12 juillet 2012 3
6 janv. 2006 à 06:33
Salut, cool la source.
Ca compile bien sous linux, en remplaçant return NULL; par return 0; à la fin de mk_socket.cpp (la fonction doit retourner un entier long non signé mais null est un pointeur).
Aurais-tu un exemple d' utilisation de la classe? J'ai du mal avec les callbacks.
dnob700 Messages postés 44 Date d'inscription mardi 17 février 2004 Statut Membre Dernière intervention 5 novembre 2007
3 janv. 2006 à 20:01
effectivement, j'était passé sur ta source en plus, mais je sais pas pourquoi elle m'a semblé plus compliqué, alors qu'elle fait effectivement à peu près la même chose que la mienne et tout aussi simplement (à l'exception du multithreading).

Pour ma phrase ce que je veux dire c'est que ça compile correctement sur les deux plateformes. Et la bibliothèque fonctionne correctement sous windows, donc je suppose qu'elle doit fonctionner correctement sous linux.
cs_jean84 Messages postés 449 Date d'inscription jeudi 26 août 2004 Statut Membre Dernière intervention 5 mars 2009
3 janv. 2006 à 12:31
> Je sais bien qu'il y en a d'autre sur le site, mais je n'en ais pas vu qui soit à la fois très simple et qui permette d'écrire des clients et des serveurs. <

T'as pas du bien chercher alors parce que moi j'en ai fait une qui correspond exactement a ces crtiteres... m'enfin bon ....

Pour le code, le fait de compiler sous linux et windows et sympa mais je comprend pas quand tu dis "Je n'ais pas pu beaucoup tester le fonctionnement de la bibliothèque sous linux. Normallement ça compile sans problème, et vu que ça marche sous windows il ne devrait pas y avoir de problèmes." Sa compile sans probleme vu que sa marche sous windows ??? j'avoue ne pas comrendre le sens de ta phrase....
je te met 7/10 car le source est bien commente et est ingenieux.
@++ et bonne continuation !
Rejoignez-nous