Masaüstümün bağlı olduğu kablosuz ağın ESSID'sini almak için aşağıdaki programı yazdım, ancak bana hata veriyor. Birisi hataları düzeltmeme yardım edebilir mi? Kod: Ben hata aşağıdaki alıyorumKablosuz ağların ESSID değerini C++ ile UBUNTU aracılığıyla bilmek istiyorsunuz
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <sys/ioctl.h>
#include <sys/stat.h>
#include <sys/socket.h>
#include <sys/types.h>
#include <fcntl.h>
#include <errno.h>
#include <linux/wireless.h>
#define IW_INTERFACE "wlan0"
extern int errno;
struct iwreq wreq;
int main (void)
{
int sockfd;
char * id;
memset(&wreq, 0, sizeof(struct iwreq));
sprintf(wreq.ifr_name, IW_INTERFACE);
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));
exit(1);
}
printf("Socket opened successfully \n");
id = new char(IW_ESSID_MAX_SIZE+1);
wreq.u.essid.pointer = id;
if (ioctl(sockfd,SIOCGIWESSID, &wreq) == -1) {
fprintf(stderr, "Get ESSID ioctl failed \n");
fprintf(stderr, "errno = %d \n", errno);
fprintf(stderr, "Error description : %s\n",strerror(errno));
exit(2);
}
printf("IOCTL Successfull\n");
printf("ESSID is %s\n", wreq.u.essid.pointer);
exit(0);
}
:
> 1. Get ESSID ioctl failed
> 2. errno = 7
> 3. Error description : Argument list too long
haklısın ben bile söylediklerini çalıştı ama döndürülen değer olsa - 1 ioctl egif tarafından (ioctl (sockfd, SIOCGIWESSID, & wreq) == -1) { fprintf (stderr, "Get ESSID ioctl başarısız \ n"); fprintf (stderr, "errno =% d \ n", errno); fprintf (stderr, "Hata açıklaması:% s \ n", strerror (errno)); printf ("ESSID,% s \ n", wreq.u.essid.pointer); –
@Alan: Sorunu düzenledim. Lütfen hala yanlış olup olmadığını söyle. – camh
Teşekkürler ama çözümünüz çalışmıyor. –