Bibliotheque reseau de Laurent Constantin (lcrzo) ----------------------------------- ---------------------------- | INTEGRATION DE LCRZO | ---------------------------- Lcrzo permet de facilement creer des programmes reseau. Pour cela, elle contient de nombreuses fonctionnalites de haut niveau, qui masquent certaines actions. Cependant, lorsque l'on desire integrer lcrzo dans un logiciel complexe : - les fonctionnalites masquees peuvent interferer avec celles que le developpeur desire mettre en place, ou - l'acces a certaines ressources bas niveau peut etre delicat, voire impossible. Voici certains points a prendre en consideration avant d'integrer lcrzo dans un logiciel de grande envergure : - Lcrzo est concu pour les programmes en mode texte (console). Lcrzo peut etre utilise en mode graphique, mais les fonctions xxx_print, xxx_fprint, xxx_stdin et xxx_passwd ne peuvent alors pas etre employees. Sous Windows, les programmes lies a lcrzo.dll doivent etre compiles avec le type "Win32 Console Application". - Les evenements de type sniff, spoof, etc. sont uniquement accessibles avec un lcrzo_wait (on ne peut donc pas se servir des fonctions select (Unix) ou WaitForxxxObjects (Windows)). Les evenements du programme de l'utilisateur doivent alors etre convertis en lcrzo_wait. Pour cela, il faut employer lcrzo_wait_init_fd, lcrzo_wait_init_handle ou lcrzo_wait_init_function. - Sous Unix, lorsque l'utilisateur presse Control-C ou kille un processus, tous ses fils (crees avec lcrzo_process_init) sont tues par lcrzo. Le developpeur doit donc employer fork et gerer lui meme ses processus si ce comportement ne correspond pas a ce qui est desire. - Sous Unix, des handlers de signaux sont positionnes par lcrzo_init pour SIGINT et SIGTERM (ils servent a gerer le Control-C ou le kill comme indique dans le point precedent). Le developpeur doit employer lcrzo_unix_signalhandler_set pour affecter ses propres handlers pour SIGINT et SIGTERM. - Sous Unix, les descripteurs de fichiers n'ont pas le flag "close on exec". Le developpeur doit donc affecter ce flag sur les descripteurs concernes avant d'appeler un programme externe sensible. N'hesitez pas a me poser vos questions si vous avez des doutes quant a une mise en oeuvre particuliere.