2010-05-30 4 views
0

Je voudrais écrire une application, pour mon propre intérêt, qui visualise graphiquement certains concepts de réseau. Fondamentalement, je voudrais montrer la sortie d'outils comme ping, traceroute et nmap.Y compris la fonctionnalité d'un outil dans un autre programme?

L'approche la plus évidente semble être d'utiliser des tuyaux pour appeler ces outils à partir de mon programme C, et traiter les informations qu'ils renvoient. Cependant, j'aimerais éviter cette approche musclée si possible. Ma question est la suivante: est-il possible d'établir un lien avec ces outils ou y a-t-il des API qui peuvent être utilisées pour obtenir un accès programmatique? Si oui, ce comportement est-il disponible outil par outil seulement? L'une des raisons de vouloir le faire est de tout garder dans un seul processus/espace d'adressage et d'éviter la dépendance vis-à-vis de ces outils externes. Par exemple, si j'écrivais une application iphone, je ne serais pas capable d'engendrer des processus pour appeler les outils externes eux-mêmes.

Merci pour tous les conseils et suggestions.

Répondre

1

L'API réseau de votre plate-forme de prédilection est tout ce dont vous avez essentiellement besoin. ping, traceroute et nmap ne font pas de magie, tout ce qu'ils font est d'envoyer et de recevoir des paquets sur le réseau.

Je ne connais pas de bibliothèques préexistantes cependant (pas que j'ai regardé non plus). S'il en est ainsi, au moins ping et traceroute sont assez triviaux à mettre en œuvre à la main.

1

Je dépend de la plateforme pour laquelle vous développez. Windows, par exemple, a un ICMP API que vous pouvez utiliser pour implémenter un outil de ping. D'autre part, le code source pour ping et traceroute est disponible sur n'importe quel système Linux, donc vous pouvez utiliser cela (à condition que la licence soit compatible avec vos besoins) comme base de vos propres programmes. Enfin, ping (ICMP) n'est pas difficile à implémenter et traceroute construit sur le ping. Cela peut valoir la peine de lancer votre propre implémentation.

+0

oh ouais, je pense que je pourrais juste regarder une distribution linux pour voir comment les outils eux-mêmes sont mis en œuvre. Plus de travail que j'espérais faire, mais ce serait une bonne expérience d'apprentissage. –