在其他程序中包含工具的功能?

时间:2010-05-30 21:03:20

标签: api linker

我想根据自己的兴趣编写一个应用程序,以图形方式显示一些网络概念。基本上我想显示ping,traceroute和nmap等工具的输出。

最明显的方法似乎是使用管道从我的C程序中调用这些工具,并处理它们返回的信息。但是,如果可能的话,我想避免这种严厉的做法。我的问题是,是否有可能以某种方式链接这些工具,或者是否有可用于获取程序访问的API?如果是这样,这种行为是否仅在逐个工具的基础上提供?

想要这样做的一个原因是将所有内容保存在单个进程/地址空间中,并避免依赖这些外部工具。例如,如果我编写了一个iphone应用程序,我将无法生成进程来调用外部工具本身。

感谢您提出任何建议或意见。

2 个答案:

答案 0 :(得分:1)

您所选择的平台中的网络API是您最需要的。 ping,traceroute和nmap没有做任何魔术,他们只是通过网络发送和接收数据包。

我不知道任何预先存在的库(不是我也看过)。如果涉及到它,至少ping和traceroute是非常容易实现的。

答案 1 :(得分:1)

我依赖于您正在开发的平台。例如,Windows有一个ICMP API可用于实现ping工具。

另一方面,ping和traceroute的源代码可以在任何Linux系统上使用,因此您可以使用它(如果许可证符合您的需要)作为您自己程序的基础。

最后,ping(ICMP)并不难实现,并且traceroute构建在ping之上。推出自己的实现可能是值得的。