Hallo,
ich versuche mir Signalstärke und ESSID von allen in der Umgebung befindlichen Drahtlosnetzwerken anzeigen zu lassen.
Das müsste meines Wissens nach mit einem Aufruf von ioctl(socket, SIOCSIWSCAN, &iwreq_struct) funktionieren.
Allerdings liefert der Aufruf bei mir immer -1, also einen Fehler zurück.
Kann mir vlt. jemand helfen?
Ich habe das mal minimal mit diesem Beispiel getestet. Wo liegt der Fehler?
#include <iostream>
#include <memory>
#include <cstdio>
#include <cstring>
#include <sys/ioctl.h>
#include <sys/socket.h>
#include <unistd.h>
#include <cerrno>
#include <string>
#include <linux/wireless.h>
int main(int argc, char **argv) {
struct iwreq wrq;
int skfd = socket(AF_INET, SOCK_DGRAM, 0);
if (skfd < 0)
std::cout << "socketerror" << std::endl;
memset(&wrq, 0, sizeof(wrq));
strncpy(wrq.ifr_ifrn.ifrn_name, "wlp0s26u1u1", IFNAMSIZ);
if (ioctl(skfd, SIOCSIWSCAN, &wrq) < 0)
std::cerr << "error" << std::endl;
}