求救啊 linux下用ioctl获取不到wifi信息

goog_guzl 2012-08-28 01:06:59
我在用ioctl获取wifi信息时总是返回-1,用peeroe()得到的错误为 Bad address。求大神指导啊!!!
这是代码:int porting_wifi_scannn()
{
struct iw_range *range;
struct iwreq iwr;

int sockfd = socket(AF_INET, SOCK_DGRAM, 0);
if (sockfd < 0 )
{
printf("create sock failed\n");
return -1;
}
int ret = 0;
memset(&iwr,0,sizeof(iwr));
iwr.u.data.pointer = (caddr_t)range;
iwr.u.data.length = sizeof(struct iw_range) + 500;
iwr.u.data.flags = 0;

strncpy(iwr.ifr_name, "wlan0", IFNAMSIZ);
printf("name = %s\n",iwr.ifr_name);
ret = ioctl(sockfd, SIOCGIWRANGE, &iwr);
printf("ret = %d\n",ret);
if (ret < 0)
{
perror("error siocgiwrange:");
return -1;
}

在调用此接口前,wifi 已经激活了,ifconfig能够看到 wlan0设备。

为什么ioctl会返回-1,错误为bad address?
...全文
296 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
writestar 2012-11-13
  • 打赏
  • 举报
回复
在板子上用iwconfig等命令查看该板子是否支持
linlan999 2012-08-29
  • 打赏
  • 举报
回复
还是看看wpa_supplicant源码包中wpa_cli是怎么实现的。
感觉这里的AF_INET 应该是PF_UNIX,只是用作本机的IPC的。

2,161

社区成员

发帖
与我相关
我的任务
社区描述
Linux/Unix社区 UNIX文化
社区管理员
  • UNIX文化社区
  • 文天大人
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧