Java Wifi-Stack如何與wpa_supplicant連接?
在「好老的Android時間」,在Java依賴於一些JNI的對局插座(文件描述符)的與之文本形式進行溝通與wpa_supplicant
溝通。通過select()
在des文件上書寫/閱讀。一旦你有一個wpa_supplicant
運行(或hostapd)
,只要你配置了這些正確的,你有一個本地套接字,你可以選擇/讀/寫命令,並從中獲取結果
在這裏看到關於它的一些解釋:
https://w1.fi/wpa_supplicant/devel/ctrl_iface_page.html
你可以用這個自己使用的wpa_cli
或hostapd_cli
程序在PC上,這些任務的實驗:將命令發送到後臺,得到異步響應等環/ rince /重複的WPA SUP」使用其-C = ctrl_interface parameter
和了用於hostapd使用-g global control interface
路徑選項中,還是在相應的配置文件。你基本上得到的是一種與守護進程進行通信的shell,所以這一切都歸結爲創建命令字符串和解析字符串響應。你可能會發現這是在wifi-legacy
或類似的東西從你的Android源代碼樹。
這是隻是工作非常務實,簡單的方法。
現在,實際真正的,長期的解決方案,正確的方式與內核通信的Wi-Fi mac80211/nl80211
層是通過libnl
。從我所看到的情況來看,谷歌現在使用的方式就是這樣。 但是! B UT:它帶有一個陡峭的學習曲線,因爲要使用的庫是非常可擴展/通用的,這意味着「做最基本的事情很複雜」,並且libnl
帶有很多API更改。如果你是谷歌,有沒有問題,這是一個非常有價值的投資,我們將圍繞這個沒有得到永遠無論如何,所以去了,我們到處都會使用它。使用libnl
與802.11內核層進行通信,並圍繞它建立一些更高級別的代碼。
如果你是一個普通用戶,歡迎幾天(周?)進入libnl
802.11使用。
來源
2016-03-06 14:59:17
jbm
你是否努力使基於CyanogenMod的你自己的ROM? –
是的,這是正確的大衛。 – Martin