The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]

форумы  помощь  поиск  регистрация  майллист  ВХОД  слежка  RSS
"получение имени и адресса машины"
Вариант для распечатки  
Пред. тема | След. тема 
Форумы Программирование под UNIX (Public)
Изначальное сообщение [Проследить за развитием треда]

"получение имени и адресса машины" 
Сообщение от nup Искать по авторуВ закладки on 03-Фев-05, 13:07  (MSK)
здрасте,
вот есть код

char *ifacename;
int sockfd;
sockfd = socket(PF_INET,SOCK_DGRAM,0);
if(sockfd == 0) printf("Error open socket");
ioctl(sockfd,SIOCGIFNAME,&ifacename);
printf("%s",ifacename);

выводит каракули
подскажите в чем проблема
спасибо

  Правка | Высказать мнение | Ответить | Рекомендовать в FAQ | Cообщить модератору | Наверх

 Оглавление

Индекс форумов | Темы | Пред. тема | След. тема
Сообщения по теме

1. "получение имени и адресса машины" 
Сообщение от chip emailИскать по авторуВ закладки(ok) on 03-Фев-05, 16:24  (MSK)
>sockfd = socket(PF_INET,SOCK_DGRAM,0);
>if(sockfd == 0) printf("Error open socket");
>ioctl(sockfd,SIOCGIFNAME,&ifacename);

ИМХО, а как это сочетается с $SUBJ ?

получить имя машины можно через gethostname(3)

  Удалить Правка | Высказать мнение | Ответить | Рекомендовать в FAQ | Cообщить модератору | Наверх

2. "получение имени и адресса машины" 
Сообщение от nup Искать по авторуВ закладки on 05-Фев-05, 20:28  (MSK)
>>sockfd = socket(PF_INET,SOCK_DGRAM,0);
>>if(sockfd == 0) printf("Error open socket");
>>ioctl(sockfd,SIOCGIFNAME,&ifacename);
>
>ИМХО, а как это сочетается с $SUBJ ?
>
>получить имя машины можно через gethostname(3)
сорри имел ввиду получение имени интерфейса  адресса машины
  Удалить Правка | Высказать мнение | Ответить | Рекомендовать в FAQ | Cообщить модератору | Наверх

3. "получение имени и адресса машины" 
Сообщение от jd Искать по авторуВ закладки(??) on 05-Фев-05, 23:50  (MSK)
Неплохо было бы проверять, что возвращает ioctl и делать perror, если что.
К тому же аргументом у ioctl SIOCGIFNAME должна быть структура ifreq (указатель на неё, разумеется), а не строка.

Вот пример работающего кода:

  int sockfd;
  struct ifreq ifr;
  sockfd = socket(PF_INET,SOCK_DGRAM,0);
  if(sockfd == 0)
  { perror("Open socket");
    // ...
  }
  memset(&ifr, 0, sizeof(ifr));
  ifr.ifr_ifindex=1; // индекс интерфейса, имя которого нужно получить
  if(ioctl(sockfd, SIOCGIFNAME, &ifr)==-1)
  { perror("ioctl");
    // ...
  }
  printf("%s\n", ifr.ifr_name);

  Удалить Правка | Высказать мнение | Ответить | Рекомендовать в FAQ | Cообщить модератору | Наверх


Архив | Удалить

Индекс форумов | Темы | Пред. тема | След. тема
Пожалуйста, прежде чем написать сообщение, ознакомьтесь с данными рекомендациями.




Партнёры:
PostgresPro
Inferno Solutions
Hosting by Hoster.ru
Хостинг:

Закладки на сайте
Проследить за страницей
Created 1996-2024 by Maxim Chirkov
Добавить, Поддержать, Вебмастеру