Projet: C: Librairie facilitant l\'utilisation des sockets
Hello :)
J\'ai commencé à écrire une petite lib en C censée me faciliter la vie en ce qui concerne l\'utilisation des sockets. Je voudrais donc vous proposer de contribuer à ce petit projet. Bien qu\'il ne nécessite pas d\'avoir de grandes connaissances, je me suis dit que peut cela pourrait être intéréssant que d\'autres dev puissent s\'y investirent.
La lib est relativement bas niveau pour le moment: elle permet de créer, d\'initialiser et d\'utiliser des sockets plus rapidement, de manière plus simple et plus propre.
Si vous voulez des infos:
t_socket (une structure...) contient un descripteur de fichiers (la socket), ses paramètres, ...
Déjà fait et fonctionnel:
inet_socket: crer un nouveau t_socket et le paramètre
cbind: bind un t_socket
cconnect: equivalent a connect
caccept: equivalent a accept mais renvoyant un pointeur sur un t_socket
clisten: equivalent a listen
crecv: equivalent a recv => utilise recv mais utilisera read()
csend: equivalent a send => utilise send mais utilisera write()
cserver: crer un simple serveur
cclient: crer un simple client
cclose: equivalent a close mais libère aussi la mémoire allouée pour le t_socket
En cours d’écriture / de tests / envisagées:
_socket: crer un nouveau t_socket de type (AF_INET ou autre)
cadd: ajoute un t_socket a une liste (utile pour les listes de clients dans le cadre d’un seveur)
cclose_all: ferme tous les t_sockets ajoutés
cbroadcast: fait un broadcast sur tous les t_sockets ajoutés
Voila tout, donc ça ne casse pas trois pattes à un canard. Une dernière chose: si vous êtes des programmeurs chevronnés, passez votre chemin, vu que j\'en suis à peine à ma seconde année de C :p
Ah, encore une chose: OUI, je connais la libCurl, NON, je ne veut pas l\'utiliser et OUI, je réinvente peut-être la roue (après tout, c\'est en forgeant que l\'on devient forgeron...).
Si tu fait référence à la fonction cserver: non. Il s\'agit juste d\'une fonction de test qui crer une socket en écoute sur un port. Mais il y\'en a trois autres sur lesquels je travail, dont une qui cré un thread (les autres fork ou utilisent select).
t\'es dans une école d\'info ?
Sinon bonne initiative, j\'avoue que le coup de l\'initialisation facilitée c\'est propre !
Alors, ça commence par un E, on à une norme de mer*e, mais on est censé être les meilleurs des meilleurs de meilleurs, chef !
T\'as deviné ! Mais oui, c\'est Epitech :p
Ah ok, j\'avais pas lu les coms.
Idem : quel intérêt d\'avoir un serveur non-threadé ? Et oublie fork(), c\'est pas du tout fait pour ça (bien que ce soit ce qu\'on apprenne à l\'école vu sa simplicité).
Epitech... ça m\'étonne pas ^^
OK, t\'en ressors rigoureux, mais t\'imagines pas à quel point c\'est bridé. Et surtout, ne pas assimiler ce que disent les profs, et s\'entrainer pour se forger sa propre opinion, parce-que niveau prof-troll, là-bas, ils sont forts.
Disons plutôt qui niveau prof, bah... pour en parler, il faudrait déjà en avoir. (En région tout du moins). Epitech n\'est pas \"bridée\": Si l\'on n\'apprend pas 36000 notions et langages les 3 premières années, on est encouragé à apprendre par nous même.
Et le moins que l\'on puisse dire, c\'est que l\'on tient la route en ce qui concerne le technique.
C\'est ce que je dis, t\'en ressors rigoureux. Mais bon, j\'ai failli y rentrer il y a quelques années, des amis à moi y étaient, et quand je nous compare maintenant tant au niveau compétences qu\'ouverture d\'esprit sur les technologies etc, j\'ai aucun regret :)
Bref, t\'es à Epitech, point. Je me tais.
Alors:
Une fonction qui fork, une qui utilise les threads, et une qui permet d\'utiliser select à la place des processus multiples (fork ou threads, peut importe).
Juste comme ça, ou est tu allé ?
L\'Epitech à mauvaise réputation, et je ne comprend pas pourquoi. Comparativement à d\'autre (Supinfo pour ne citer qu\'un nom), je n\'ai pas l\'impression d\'être en retard, d\'autant plus que certains de ma promo ont changé pour Supinfo il y\'a un an et sont revenus nous raconter leur vie, ce qui m\'a permis de me faire une idée claire.
Ben pour moi, Supinfo n\'est pas une référence non plus ^^
Puisque tu demandes, j\'ai fait un BTS IRIS puis l\'ENSEEIHT. Ca m\'a permis de bosser pour EADS Astrium, le CNES et Thalès et d\'obtenir un diplôme reconnu par l\'Etat. Tu en ressors ingénieur, avec un CV fourni et un diplôme officiel, à la différence d\'EPITECH où malgré tes bonnes connaissances en prog tu en ressors technicien, sans diplôme officiel. Le choix est vite fait...
Le diplome Epitech EST reconnu par l\'état: http://www.epitech.eu/diplome-epitech-homologue-niveau1-bac-5-art445.html
Donc arrêtons de dire des anneries sans se renseigner. Certes, ce n\'est pas le diplome \"ingenieur\", mais l\'homologation niveau 1 reviens \"presque\" au même (sans la \"gloire\" d\'être ingénieur donc).
Epitech, c\'est un diplome officiel ET une très bonne formation technique.
J\'ai jeté un oeil au site de l\'ENSEEIHT, notemment au programme de la fillière IMA. C\'est très proche de ce que nous voyons à l\'Epitech, pour ne pas dire identique.
C\'est ce que je te dis depuis 3 comms. Malgré tes compétences identiques voire plus élevée que celles qu\'on peut obtenir en école d\'ingé, la différence n\'est absolument pas la gloire d\'être ingé (osef de ça), disons simplement que pour le même boulot, un mec qui sort de l\'EPITECH touchera 1800e, un ingé 3500, avec beaucoup plus de perspectives de montée en grade.
Et non tu as raison, je dis n\'importe quoi, je ne me suis pas renseigné... Honte à moi
Effectivement, tu dis n\'importe quoi. Lien: http://www.epitech.eu/apres-epitech-sct302.html
(salaires moyens).
Je relativise tout de même le \"notablement supérieur à celui des diplômés sortants d\'écoles d\'ingénieurs\", mais ces chiffres sont assez proche de la réalité. J\'ai eu l\'occasion d\'en discuter avec d\'anciens étudiants qui m\'ont confirmer la validité de ces chiffres.
Une entreprise recherche avant tout la compétence. Que le mec se ramène avec un diplome d\'ingénieur ou pas, le salaire sera similaire
Et non, pas honte à toi. Mais la situation d\'Epitech / Epita à beaucoup évolué ces dernières années.
Epita n\'a rien à voir avec Epitech ! La notoriété d\'Epita est bien supérieure à celle d\'Epitech, et je viens de regarder, le diplôme d\'Epitech a été officialisé en 2008/2009, donc après mes recherches d\'orientation. Donc oui, à mon époque, il n\'était pas officiel, ça a changé, au temps pour moi, mais ne dis pas que je ne me suis pas renseigné. Et pour les salaires & co, le simple fait de me balancer des liens du site même d\'Epitech me prouve que t\'es un peu naïf. Je suis en train de t\'expliquer qu\'il faut prendre du recul avec cette école. Vas plutot voir des liens de forums & co qui sont bien plus objectifs.
Mais bon au pire, on dérive complètement du sujet
Yep, je connais. Mais je pensais plus utilisé mon svn vu la taille des fichiers. (sauf si c\'est pour coder en même temps sur une même portion du code, ou ce genre de site peut être utile.)
Si tu es tenté, je te mp l\'adresse de mon dépot. (ou je cré un repo sur google code, je verrais bien).
Dsl mais je vais pas avoir le temps et le C et les sockets ne m\'attirent pas du tout, mais belle initiative !
J\'ai écrit une mini-mini documentation:
http://mine42.com/wp-content/uploads/2012/03/doc.pdf
les fonctions lsc_client et lsc_server n\'y figurent pas car sont trop... incomplète.
Il reste encore beacoup de boulot avant que cette lib mérite ce titre :p
Ce sera plus simple de juger de l\'état des choses de cette manière.
\"J\'ai commencé à écrire une petite lib en C censée me faciliter la vie en ce qui concerne l\'utilisation des sockets.\"
OK, j\'ai pas lu plus loin, si tu sais pas manipuler les sockets UNIX, c\'est que t\'es pas fait pour être programmeur. Ya rien de plus simple.
A bon entendeur
Je sais suffisamment manipuler les-dits sockets pour en faire une lib. Ensuite, faut être con pour ne pas vouloir se simplifier la vie.
Perso, je ne trouve pas que ce soit agréable de se trimballer des pointeurs sur des structures se référant à des sockets, de s\'emmerder à écrire les mêmes lignes de code identiques à chaque nouveau projet.
Et au cas ou tu n\'aurais pas bien lu (ce qui arrive, donc partons du fait que tu n\'es pas un troll), il est écrit: \"J\'ai commencé à écrire une petite lib en C censée me faciliter la vie [...]\". Le mot \"faciliter\" est la pour une raison, pas pour faire joli.
Encore une chose: la NASA utilise un lib qui fait office de sur-couche aux fonctions de manipulation des sockets. Des gens se cassent le cul à développer la libCURL. D\'autres font leurs propres lib histoire de se simplifier la vie et d\'apprendre.
En revanche, si tu es si sur de toi et de tes compétences, il aurait été plus glorifiant de formuler une remarque constructive plutôt qu\'un troll à deux balles sur ce sujet.
Pour te citer: \"A bon entendeur\"
Bon, il ne faut effectivement pas assimiler sans arrêt \"désaccord\" et \"troll\".
La NASA & co... ils codent leur surcouche parce-que leurs sockets ne sont (j\'imagine) pas de simples sockets (ajout de variables, multi-thread & co, je ne sais pas), et c\'est surtout, aussi, pour offrir une API utilisable par quiconque sans se préoccuper de \"comment ça fonctionne\" (optimisation de maintenance, standardisation du code, etc). Toi, et c\'est ce que j\'ai cité dans mon com, ton projet est de te faciliter la tache. Quel intérêt d\'offrir une surcouche pour soit-même ? Ta lib propose les mêmes fonctions que les sockets UNIX, à peu de choses près, donc à part gagner la factorisation de 3 pointeurs, t\'y gagnes vraiment rien, je t\'assure. (sauf si par exemple, tu implémentais le multi-plateforme sans se faire chier avec les directives preprocessor).
Si t\'aimes pas manipuler des pointeurs, change de langage... (perso c\'est ça qui me rend amoureux du C).
Et, pour finir, si ton objectif est simplement de hooker les sockets pour les écrire à ta façon, pourquoi poster le projet ici ? En un weekend, t\'as plié le truc, non ?
Ou bien j\'ai mal saisi.
Tu as mal saisi.
Je fait une lib pour me faciliter la tâche, et c\'est bien la le but des librairies. Ensuite, tout projet commence par quelque chose, même si ce n\'est pas forcément grandiose.
Mon but est d\'implémenter une sur-couche aux fonctions de base histoire de se simplifier le travail. Si tu estimes que ce qui est présenter ici n\'est pas complet, tu as raison, car vu que personne ne s\'y est intéressé, j\'ai laisser tomber ce sujet et j\'ai continuer dans mon coin.
Ce que j\'y gagne ? Entre autre:
-des fonctions qui gèrent elles mêmes les erreurs
-des listes de clients / serveurs avec les quels communiquer plus facilement
-un moyen plus simple de créer des sockets et de les configurer
-communication entre les sockets simplifiée (variable numériques, fichiers, chaines, ...)...
C\'est un projet perso, et je pensais que d\'autre auraient pu s\'y intéresser, et ajouter quelque chose. Personne n\'en veut ? Tant pis, ce n\'était qu\'une idée.
Donc, je résume:
Librairie en cours de dev
Librairie sans intérêt particulier à part celui d\'apprendre
Librairie qui me facilite la vie
Librairie qui n\'a pas pour but de concurrencer celles existantes
Tu ne dois accéder à ce site que si tu as au moins 18 ans ou si tu as l'âge légal pour visionner ce type de matériel dans ta juridiction locale, l’âge le plus élevé étant retenu. En outre, tu déclares et garantis que tu ne permettras aucun mineur à d'accéder à ce site ou à ces services.
En accédant à ce site, tu acceptes nos conditions d'utilisation.