36

利用可能なワイヤレス ネットワークのリストを取得したいと考えています。理想的には、これは何らかの C 呼び出しを介して行われますが、システム コールでこじ開ける必要があるかどうかは気にしません。必要な C 呼び出しまたはプログラムがエキゾチックなサード パーティ パッケージを必要としない場合は、さらに優れています。

インターネットは、コマンドラインからトリックを行うように見える使用を示唆sudo iwlist <interface> scanしているようですが、ルート権限は必要ありません。何も変更せずに、基本のみを確認します。

4

3 に答える 3

28

iwlistが含まれているWirelessToolsパッケージには、 Wireless ToolsHelperLibraryも含まれています。iwlib.hをインクルードし、 libiw.aとリンクする必要があります(つまり、 -liwを追加します)。次に、iw_set_ext関数のドキュメントを検索します。SIOCSIWSCANパラメーターが最も役立ちます。このインターフェースの使用方法の例については、KDEライブラリーのKWifiManagerソースを見てください(Interface_wireless_wirelessextensions :: get_available_networksメソッドを参照)。または、ワイヤレスツールのソースコードをダウンロードして、iwlibiw_set_ext関数がiwlist.cでのスキャンにどのように使用されているかを確認することもできます。

特権に関しては、スキャンを実行するためにプロセスをrootとして実行する必要があると思います。これが他の方法でもできるかどうか知りたいです。

Ubuntu 8.04を使用しているので、libiw-devパッケージが役立つはずです。

于 2008-12-30T14:39:37.323 に答える
3

nmcliルート権限やWIFIインターフェースの名前を必要としないものを使用できます。

nmcli -t -f ssid dev wifi
于 2019-11-28T23:23:56.710 に答える