Форум программистов, компьютерный форум CyberForum.ru
Наши страницы

системная информация - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ часовой пояс http://www.cyberforum.ru/cpp-beginners/thread349002.html
Здравствуйте! Не знаю в чем ошибка... Тест не проходить... Найдите пожалуйста что я не делаю правильно. Условие такое: Самолет взлетает в X (целое, 0<=X<=23) часов по местному времени в часовом...
C++ Подскажите литературу. Здраствуйте. Подскажите пожалуйста хорошую литературу по структурах и класах в Си, писаную для конкретных баранов и тех у кого опилки в башке, ато уже наизнанку выворачивает от злости, ничего не... http://www.cyberforum.ru/cpp-beginners/thread348989.html
C++ Парсер
Возник вопрос как лучше написать парсер. Интересно просто услышать советы. Грамматика примерно такова. /* Grammar * * Expr : PrimaryCommand * PrimaryCommand : InsertCommand |...
Переименование типов в подключаемом модуле C++
Написал свой модуль для работы со связными списками, в которых хранится информация типа int, следовательно, в каждом объекте располагается переменная типа int и несколько методов для обработки. Для...
C++ Помогите с Шифром Цезаря http://www.cyberforum.ru/cpp-beginners/thread348971.html
Вообщем народ! Необходимо чтоб на вход поступала зашифрованная строка на латинице и далее выдавались все варианты перебора... Не могу понять как реализовать сдвиг:wall:, помогите... #include...
C++ Освобождение памяти, занятой вектором У меня задача требует чтобы у вектора было в резерве не более 100 элементов. При постоянном росте вектора понятно как это обеспечить, а вот как быть при уменьшении количества элементов? Я не в курсе... подробнее

Показать сообщение отдельно
talis
791 / 543 / 37
Регистрация: 11.05.2010
Сообщений: 1,298
Записей в блоге: 1
07.09.2011, 19:03
-=ЮрА=-, а ведь у вас только один IP будет показан, и только IPv4

Показать информацию по всем сетевым интерфейсам

C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
#define _WIN32_WINNT 0x0501
 
#include <stdio.h>
 
#include <winsock2.h>
#include <iphlpapi.h>
 
char lsInterfaces( FILE * outfd )
{
    IP_ADAPTER_ADDRESSES * addr;
    unsigned long size = 15000;
 
    IP_ADAPTER_UNICAST_ADDRESS * uni_it;
    IP_ADAPTER_ANYCAST_ADDRESS * any_it;
    IP_ADAPTER_MULTICAST_ADDRESS * mul_it;
 
    unsigned long ret;
    unsigned long i;
 
    while( 1 ) // методично увеличиваем размер буфера,
    {          // пока GetAdaptersAddresses не скажет, что хватит
        addr = (IP_ADAPTER_ADDRESSES *) malloc( size );
 
        if( !addr )
        {
            fputs( "Failed to allocate memory for GetAdaptersAddress call\n", stderr );
            return 1;
        }
 
        ret = GetAdaptersAddresses( AF_UNSPEC, 0, 0, addr, &size );
 
        if( ret != ERROR_BUFFER_OVERFLOW )
            break;
 
        free( addr );
        addr = 0;
    }
 
    if( ret == ERROR_NO_DATA )
    {
        if( addr ) free( addr );
        fputs( "No interfaces found\n", outfd );
        return 0;
    }
    else if( ret != NO_ERROR )
    {
        if( addr ) free( addr );
        fputs( "Error while searching for interfaces\n", stderr );
        return 1;
    }
 
    IP_ADAPTER_ADDRESSES * it = addr;
 
    while( it ) // вытаскиваем инфу по каждому интерфейсу
    {
        fprintf( outfd, "%ls:\n\t\"%ls\"", it->FriendlyName, it->Description );
 
 
        uni_it = it->FirstUnicastAddress;
        if( uni_it )
        {
            fputs( "\n\tUnicast addresses:\n", outfd );
 
            for( ; uni_it != 0; uni_it = uni_it->Next )
                fprintf( outfd, "\t\t%s\n", inet_ntoa( ( (struct sockaddr_in*)(uni_it->Address.lpSockaddr) )->sin_addr ) );
        }
 
        mul_it = it->FirstMulticastAddress;
        if( mul_it )
        {
            fputs( "\n\tMulticast addresses:\n", outfd );
 
            for( ; mul_it != 0; mul_it = mul_it->Next )
                fprintf( outfd, "\t\t%s\n", inet_ntoa( ( (struct sockaddr_in*)(mul_it->Address.lpSockaddr) )->sin_addr ) );
        }
 
        any_it = it->FirstAnycastAddress;
        if( any_it )
        {
            fputs( "\n\tAnycast addresses:\n", outfd );
 
            for( ; any_it != 0; any_it = any_it->Next )
                fprintf( outfd, "\t\t%s\n", inet_ntoa( ( (struct sockaddr_in*)(any_it->Address.lpSockaddr) )->sin_addr ) );
        }
 
        // там ещё много чего интересного - DNS-суффиксы, MAC адреса, шлюзы WINS сервера и т.д.
        // покопайтесь в msdn
 
        fputc( '\n', outfd );
        it = it->Next;
    }
 
    free( addr );
 
    return 0;
}
 
int main()
{
    WSADATA dummy;
    WSAStartup( 0x0202, &dummy );
 
    lsInterfaces( stdout ); // можно не только на stdout, если надо :-)
 
    WSACleanup();
 
    return 0;
}
прилинкуйтесь к библиотекам ws2_32 и iphlpapi
1
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru