欢迎来到Doc100.Net免费学习资源知识分享平台!
您的位置:首页 > 程序异常 >

请问:c代码基于wpa_supplicant怎么编写无线连接程序

更新时间: 2014-01-05 03:19:51 责任编辑: Author_N1

 

请教:C代码基于wpa_supplicant如何编写无线连接程序
各位大侠好,我是一个c代码新手
目前需要制作一个无线连接程序,驱动什么的已经搞好了
目前我基于wpa_supplicant和wireless tools做了一个,感觉好像很别扭

首先,对于wpa_supplicant需要的配置文件,我使用fopen创建文件,把配置在一个字符串数组里组装好,然后fwrite到配置文件里,然后使用system执行 wpa_supplicant -B -iwlan0 -c/etc/wpa_supplicant.conf -Dwext 这样的命令来进行无线连接。

搜索过程,我就是使用system执行 iwlist ra0 scan >tmp_file,把结果写到文件里,fopen后,用ftell一句一句的分析,把需要的essid,加密方式这些参数提取出来

对于连接的情况,也是通过执行相关命令把命令结果存在文件中,然后fopen后,读出来检查。

因为没有参加太多的软件开发,所以,目前我只想了这么一个办法。

这个办法很别扭,如果完全都是正确的话,那直接就连接了,没什么问题。
但是如果wpa_supplicant命令执行错了,比如密码有问题等,没法反馈出来
特别是wep方式,密码错了,完全没有打印反馈回来的,我也没法准确的提示出连接正确还是错误。

特地来请教各位大侠,有没有更好的办法?我感觉我这个办法,那是相当的费时费力啊。。。

万分感谢了!!
--参考方法--
顶。是android环境还是linux环境呀?android下应该有参考源码呀。linux环境命令行模式下不懂怎么搞。
--参考方法--
可以把密码保存到一个文件,再和获取的密码比较啊,比较字符串还不会吗?
--参考方法--
基本就是LZ的做法了,可以根据需求慢慢改善。

--参考方法--
system执行 iwlis
--参考方法--
1. 使能 WIFI
2. 查找 AP
3. 配置 AP 参数
4. 连接
5. 配置 IP 地址
基本流程就这样吧。
--参考方法--
一、WIFI的基本架构
    1、wifi用户空间的程序和库:
         external/wpa_supplicant/
       生成库libwpaclient.so和守护进程wpa_supplicant。
    2、hardware/libhardware_legary/wifi/是wifi管理库。
    3、JNI部分:
         frameworks/base/core/jni/android_net_wifi_Wifi.cpp
    4、JAVA部分:
         frameworks/base/services/java/com/android/server/
         frameworks/base/wifi/java/android/net/wifi/ 
    5、WIFI Settings应用程序位于:
       packages/apps/Settings/src/com/android/settings/wifi/
二、WIFI在Android中如何工作
   Android使用一个修改版wpa_supplicant作为daemon来控制WIFI,代码位于
   external/wpa_supplicant。wpa_supplicant是通过socket与
   hardware/libhardware_legacy/wifi/wifi.c通信。UI通过android.net.wifi package
   (frameworks/base/wifi/java/android/net/wifi/)发送命令给wifi.c。
   相应的JNI实现位于frameworks/base/core/jni/android_net_wifi_Wifi.cpp。
   更高一级的网络管理位于frameworks/base/core/java/android/net。
三、配置Android支持WIFI
   在BoardConfig.mk中添加:
      BOARD_HAVE_WIFI := true
      BOARD_WPA_SUPPLICANT_DRIVER := WEXT
   这将在external/wpa_supplicant/Android.mk设置WPA_BUILD_SUPPLICANT为true,
   默认使用驱动driver_wext.c。
   如果使用定制的wpa_supplicant驱动(例如 madwifi),可以设置:
       BOARD_WPA_SUPPLICANT_DRIVER := MADWIFI
四、使能wpa_supplicant调试信息
   默认wpa_supplicant设置为MSG_INFO,为了输出更多信息,可修改:
   1、在common.c中设置wpa_debug_level = MSG_DEBUG;
   2、在common.c中把#define wpa_printf宏中的
      if ((level) >= MSG_INFO)
      改为
      if ((level) >= MSG_DEBUG)
上一篇:上一篇
下一篇:下一篇

 

随机推荐程序问答结果

 

 

如对文章有任何疑问请提交到问题反馈,或者您对内容不满意,请您反馈给我们DOC100.NET论坛发贴求解。
DOC100.NET资源网,机器学习分类整理更新日期::2014-01-05 03:19:51
如需转载,请注明文章出处和来源网址:http://www.doc100.net/bugs/t/20904/
本文WWW.DOC100.NET DOC100.NET版权所有。