Включая функциональность инструмента в другой программе? - PullRequest
0 голосов
/ 31 мая 2010

Я хотел бы написать приложение для моего собственного интереса, которое графически визуализирует некоторые концепции сети. В основном я хотел бы показать вывод таких инструментов, как ping, traceroute и nmap.

Наиболее очевидный подход, по-видимому, заключается в использовании каналов для вызова этих инструментов из моей C-программы и обработки возвращаемой ими информации. Тем не менее, я хотел бы избежать этого грубого подхода, если это возможно. У меня вопрос: можно ли как-то связать эти инструменты или есть API, которые можно использовать для получения программного доступа? Если да, доступно ли это поведение только для отдельных инструментов?

Одна из причин, по которой вы хотите это сделать, состоит в том, чтобы хранить все в одном пространстве процессов / адресов и избегать зависимости от этих внешних инструментов. Например, если бы я написал приложение для iphone, я не смог бы порождать процессы для вызова внешних инструментов.

Спасибо за любые советы или предложения.

Ответы [ 2 ]

1 голос
/ 31 мая 2010

Я зависит от платформы, для которой вы разрабатываете. Например, в Windows есть ICMP API , который можно использовать для реализации инструмента ping.

С другой стороны, исходный код для ping и traceroute доступен в любой системе Linux, поэтому вы можете использовать его (при условии, что лицензия была совместима с вашими потребностями) в качестве основы ваших собственных программ.

Наконец, ping (ICMP) не сложен для реализации, и трассировка трассы строится поверх ping. Может быть, стоит просто свернуть собственную реализацию.

1 голос
/ 31 мая 2010

Сетевой API в выбранной вами платформе - это все, что вам нужно. ping, traceroute и nmap ничего не делают, все, что они делают, это отправляют и получают пакеты по сети.

Я не знаю ни одной ранее существовавшей библиотеки (хотя я тоже не смотрел). Если дело доходит до этого, по крайней мере, ping и traceroute довольно просто реализовать вручную.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...