WLAN mit C++
-
Hallo zusammen,
ich möchte gerne mit einem selbstgeschriebenen Programm entscheiden mit welchem Access-Point sich der PC verbinden soll.
Dieser muss sich auch während der Laufzeit wieder ändern können, wenn z.B. das Signal zu niedrig wird.Es geht hier bei um einen mobilen Roboter, welcher ein grösseres Gebiet abfährt. Um dieses Gebiet befinden sich mehrere APs, und der Roboter soll sich immer mit dem Ap verbinden mit dem besten Empfang, bzw. wenn mein Laptop mit einem Ad-Hoc Netzwerk in Reichweite ist, soll er sich immer mit diesem verbinden.
Kann mir einer sagen wie es möglich ist die Empfangsstärken der APs auszulesen und bei bedarf den AP zu wechseln?
Gruß
Nemesis
-
Nutze doch dafuer ein Shell Script. Auf jeden Fall einfacher zu bauen. Ob in irgendeiner /proc/* die Signalstaerke ist, keine Ahnung. Es geht vllt. mit system() aber dann kannste auch gleich /bin/bash nutzen.
Ivo
-
Für welches Betriebssystem soll das ganze denn sein? Ich gehe jetzt einfach mal von Linux aus...
Wenn das Programm nur die Aufgabe hätte, sich um das Aufbauen der WLAN-Verbindungen zu kümmern, dann würde ich das sicher nicht in C++ schreiben, sondern eher als Shell-Skript (die passenden Befehle wären wohl iwlist, iwspy, iwconfig, iwpriv). Natürlich kannst du die Befehle auch aus C++ aufrufen, aber welchen Sinn macht das?
Und solltest du wirklich eine reine C/C++-Lösung haben wollen, dann guck dir doch einfach mal die libiw an, die von den oben genannten Befehlen intern benutzt wird.
Ansonsten, bei den meisten aktuellen Desktop-Linuxes kümmert sich der NetworkManager um die Verbindungen, welcher sich auch per D-BUS steuern ließe. Aber ich weiß natürlich nicht, ob dir sowas auf deinem Roboter zur Verfügung steht.
-
ich würde wpa_supplicant nehmen, das ist im Prinzip, was du schreiben möchtest.
-
supertux schrieb:
ich würde wpa_supplicant nehmen, das ist im Prinzip, was du schreiben möchtest.
wpa_supplicant kümmert sich, wie der Name schon andeutet, um die Authentifizierung per WPA. Wäre zwar möglich, daß der auch gebraucht wird (wenn die Access-Point WPA verwenden), aber mit der Frage des OP hat das erstmal nix zu tun.
-
du kannst aber auch mit wpa_cli die Daten verändern, sprich ssid, usw. Aber ich denke, ich hab die ursprüngliche Frage nicht ganz richtig verstanden.
-
dooooomi schrieb:
supertux schrieb:
ich würde wpa_supplicant nehmen, das ist im Prinzip, was du schreiben möchtest.
wpa_supplicant kümmert sich, wie der Name schon andeutet, um die Authentifizierung per WPA. Wäre zwar möglich, daß der auch gebraucht wird (wenn die Access-Point WPA verwenden), aber mit der Frage des OP hat das erstmal nix zu tun.
Erst denken dann schreiben. wpa_supplicant ist hier das Mittel der Wahl.
-
Ok, wpa_supplicant scheint inzwischen doch einiges mehr zu können, als mir bewußt war. Möglich, daß damit das ganze Problem schon gelöst wäre.