2008-12-18 184 views
3

我需要在C++中做一些與網絡有關的事情,我通常會在Linux中使用ifconfig,但是我想在不解析一組系統調用的輸出的情況下執行此操作。可以使用哪些C或C++庫來判斷網絡適配器是啓動還是關閉,讀取或更改適配器的IP地址和網絡掩碼,並更改默認的DNS網關?如何在C++中更改IP地址?

回答

4

基本上,您需要使用套接字句柄(SIOCGIFADDR,SIOCADDRT)進行一堆ioctl調用。您可以在Documentation/networking下找到在Linux內核源代碼中使用它的示例程序。其他一些鏈接,可能會有所幫助:

編輯:我還要補充一點,如果你的目標是桌面Linux,那麼你可以考慮使用DBUS API使用NetworkManager查詢網絡參數。

+0

謝謝。我最終使用了ioctl,通過您提供的第一個鏈接瞭解了這一點。 – 2008-12-19 21:28:54

+0

文檔/網絡下究竟要讀什麼? – 2017-09-08 14:48:52

0

NetworkManager服務公開了一個API,通過dbus來查詢/操縱當今許多發行版的網絡。這可能對您而言過於高級(例如,您需要對網絡進行更好的控制,或者dbus/NetworkManager在系統上不可用),但它可能會爲您提供所需的功能。

檢查出dbus C++ bindingsNetworkManager API(對不起,我現在找不到更好的格式化版本,但信息在那裏)。