2010-05-30 62 views
0

爲了我自己的興趣,我想編寫一個應用程序,以圖形方式將某些網絡概念可視化。基本上我想顯示來自ping,traceroute和nmap等工具的輸出。在另一個程序中包含工具的功能嗎?

最明顯的方法似乎是使用管道從我的C程序中調用了這些工具,並處理它們返回的信息。但是,如果可能的話,我想盡量避免這種嚴厲的做法。我的問題是,是否有可能以某種方式與這些工具鏈接,或者是否有可用於獲取編程式訪問權限的API?如果是這樣,這種行爲是否僅在一個工具的基礎上可用?

爲希望做到這一點

一個原因是把一切都在一個單一的過程/地址空間,以避免對這些外部工具的Dependance。例如,如果我編寫了一個iphone應用程序,那麼我將無法派生進程來調用外部工具本身。

感謝您的任何意見或建議。

回答

1

在您選擇的平臺的網絡API是所有你需要的本質。 ping,traceroute和nmap沒有任何魔法,他們所做的只是通過網絡發送和接收數據包。

我不知道任何現有的庫雖然(不,我已經看過其一)。如果說到這一點,至少ping和traceroute是手工實現的相當微不足道。

1

我依賴於您正在開發的平臺。例如,Windows有一個ICMP API,您可以使用它來實現ping工具。

另一方面,ping和traceroute的源代碼在任何Linux系統上都可用,因此您可以使用它(提供的許可證與您的需求兼容)作爲您自己的程序的基礎。

最後,中國平安(ICMP)是不難實現和traceroute建立在平的頂部。推出自己的實現可能是值得的。

+0

噢,我想我可能只是看一個Linux發行版,看看自己是怎樣的工具來實現。比我希望做的更多的工作,但這將是一個很好的學習經驗。 – 2010-05-31 01:15:22

相關問題