The OpenNET Project / Index page

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

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

"Как по-проще узнать свой IP в C++ в Linux? "  
Сообщение от ufobject email(ok) on 15-Июн-06, 15:52 
Привет многоуважаемый ALL!
У меня стоит задача узнать свой IP адрес как можно проще в C++ под линух. Использование gethostbyname не катит так же как и любой способ с использованием DNS. Консоль и конфиги не катят. HELP!
Правка | Высказать мнение | Ответить | Cообщить модератору | Наверх

 Оглавление

Сообщения по теме [Сортировка по времени, UBB]


1. "Как по-проще узнать свой IP в C++ в Linux? "  
Сообщение от vic (??) on 15-Июн-06, 16:59 
>Привет многоуважаемый ALL!
>У меня стоит задача узнать свой IP адрес как можно проще в
>C++ под линух. Использование gethostbyname не катит так же как и
>любой способ с использованием DNS. Консоль и конфиги не катят. HELP!
>

Адреса назначаются интерфейсам, у интерфейса может быть 0 и более адресов.
Системный вызов ioctl() позволяет получить список интерфейсов и их адреса.

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

2. "Как по-проще узнать свой IP в C++ в Linux? "  
Сообщение от ufobject email(??) on 16-Июн-06, 14:45 
>Адреса назначаются интерфейсам, у интерфейса может быть 0 и более адресов.
>Системный вызов ioctl() позволяет получить список интерфейсов и их адреса.

А можно простенький примерчик?

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

3. "Как по-проще узнать свой IP в C++ в Linux? "  
Сообщение от chip email(ok) on 16-Июн-06, 16:23 
>>Адреса назначаются интерфейсам, у интерфейса может быть 0 и более адресов.
>>Системный вызов ioctl() позволяет получить список интерфейсов и их адреса.
>
>А можно простенький примерчик?

Конечно, исходные тексты ifconfig(8)


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

4. "Как по-проще узнать свой IP в C++ в Linux? "  
Сообщение от vic (??) on 16-Июн-06, 17:05 
>>>Адреса назначаются интерфейсам, у интерфейса может быть 0 и более адресов.
>>>Системный вызов ioctl() позволяет получить список интерфейсов и их адреса.
>>
>>А можно простенький примерчик?
>
>Конечно, исходные тексты ifconfig(8)

и еще:
man ioctl
man ioctl_list
Стивенс "UNIX. Разработка сетевых приложений" http://www.ozon.ru/context/detail/id/1390985/

По простому в системно-зависимых областях редко бывает.

Совсем простой пример (без всяких проверок и т.п.), чисто для идеи...

#include <stdio.h>
#include <string.h>
#include <unistd.h>
#include <sys/ioctl.h>
#include <net/if.h>
#include <arpa/inet.h>

int main()
{
    struct ifreq ifr;
    memset(&ifr, 0, sizeof(ifr));
    strcpy(ifr.ifr_name, "eth0");

    int s = socket(AF_INET, SOCK_DGRAM, 0);
    ioctl(s, SIOCGIFADDR, &ifr);
    close(s);

    struct sockaddr_in *sa = (struct sockaddr_in*)&ifr.ifr_addr;
    
    printf("addr = %s\n", inet_ntoa(sa->sin_addr));
    return 0;
}

ЗЫ. Если не секрет, почему popen + ifconfig не катит? ;) Всем почему-то катит, а вам нет..

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

5. "Как по-проще узнать свой IP в C++ в Linux? "  
Сообщение от ufobject email(??) on 16-Июн-06, 17:14 
>>>Адреса назначаются интерфейсам, у интерфейса может быть 0 и более адресов.
>>>Системный вызов ioctl() позволяет получить список интерфейсов и их адреса.
>>
>>А можно простенький примерчик?
>
>Конечно, исходные тексты ifconfig(8)

Ok, но теперь я не могу найти это исходник. find | grep ifconfig результата не дает в каталоге с исходниками. Где мне его искать?

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

6. "Как по-проще узнать свой IP в C++ в Linux? "  
Сообщение от ufobject email(??) on 16-Июн-06, 17:25 
>>>>Адреса назначаются интерфейсам, у интерфейса может быть 0 и более адресов.
>>>>Системный вызов ioctl() позволяет получить список интерфейсов и их адреса.
>>>
>>>А можно простенький примерчик?
>>
>>Конечно, исходные тексты ifconfig(8)
>
>Ok, но теперь я не могу найти это исходник. find | grep
>ifconfig результата не дает в каталоге с исходниками. Где мне его
>искать?
ээ.. сорри. Предидущее сооббщение пропустил не обновил форум

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

7. "Как по-проще узнать свой IP в C++ в Linux? "  
Сообщение от ufobject email(??) on 16-Июн-06, 17:31 
vic благодарствую! То что надо :)

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

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

Индекс форумов | Темы | Пред. тема | След. тема
Оцените тред (1=ужас, 5=супер)? [ 1 | 2 | 3 | 4 | 5 ] [Рекомендовать для помещения в FAQ]




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

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