用于查找BSSID OF关联网络的C ++代码

时间:2011-05-13 13:18:18

标签: ubuntu-10.10 c++

您好我已经编写了以下代码,它是项目的一部分。它用于查找当前关联网络的ESSID

但它有一个缺陷:它还会显示与我无关联的网络的ESSID ,即如果我尝试将自己与无线n / w关联,如果它不成功,即NO DHCP OFFERS ARE RECEIVED,那么它也会显示我尝试过的ESSID

任何人都可以ioctl拨打BSSID来查找当前关联无线的 int main (void) { int errno; struct iwreq wreq; CStdString result = "None"; int sockfd; char * id; char ESSID[100]; memset(&wreq, 0, sizeof(struct iwreq)); if((sockfd = socket(AF_INET, SOCK_DGRAM, 0)) == -1) { fprintf(stderr, "Cannot open socket \n"); fprintf(stderr, "errno = %d \n", errno); fprintf(stderr, "Error description is : %s\n",strerror(errno)); return result ; } CLog::Log(LOGINFO,"Socket opened successfully"); FILE* fp = fopen("/proc/net/dev", "r"); if (!fp) { // TBD: Error return result; } char* line = NULL; size_t linel = 0; int n; char* p; int linenum = 0; while (getdelim(&line, &linel, '\n', fp) > 0) { // skip first two lines if (linenum++ < 2) continue; p = line; while (isspace(*p)) ++p; n = strcspn(p, ": \t"); p[n] = 0; strcpy(wreq.ifr_name, p); id = new char[IW_ESSID_MAX_SIZE+100]; wreq.u.essid.pointer = id; wreq.u.essid.length = 100; if ( ioctl(sockfd,SIOCGIWESSID, &wreq) == -1 ) { continue; } else { strcpy(ESSID,id); return ESSID; } free(id); } free(line); fclose(fp); return result; } 吗?。在我看来,这是我可以标记黑白关联和非关联的唯一方式。

CODE: -

{{1}}

0 个答案:

没有答案
相关问题