Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > C/C++ программирование > Общие вопросы C/C++
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 26.03.2010, 17:27   #1
евгений_8686
Новичок
Джуниор
 
Регистрация: 15.01.2008
Сообщений: 2
По умолчанию Как найти все компьютеры в сети

Пишу программу для поиска по сети.
Нужно найти все компьютеры сети.
Как это сделать?
Делал:
Код:
void GetNetworkComputers()
{
    DWORD NetSize = NULL, NetSize2 = NULL, NetSize3 = NULL, NetCount = NULL, NetCount2 = NULL, NetCount3 = NULL;
    HANDLE nConnectedEnum = NULL,nConnectedEnum2 = NULL,nConnectedEnum3 = NULL;
    NETRESOURCE nr1[32] = {0};
    NETRESOURCE nr2[256] = {0};
    NETRESOURCE nr3[3200] = {0};
    DWORD iii = 0;
    int res; 
    WNetOpenEnum(RESOURCE_GLOBALNET,RESOURCETYPE_ANY,0,NULL,&nConnectedEnum);
    NetSize = sizeof(nr1);
    NetCount = 0xFFFFFFFF;
    WNetEnumResource(nConnectedEnum,&NetCount,nr1,&NetSize);
    DWORD i = 0;
    while (i < NetCount)
    {
        nConnectedEnum2 = INVALID_HANDLE_VALUE;
        res = WNetOpenEnum(RESOURCE_GLOBALNET,RESOURCETYPE_ANY,0,&nr1[i],&nConnectedEnum2);
        if (res == NO_ERROR)
        {
            NetSize2 = sizeof(nr2);
            NetCount2 = 0xFFFFFFFF;
            DWORD EnumCode = WNetEnumResource(nConnectedEnum2,&NetCount2,nr2,&NetSize2);
            DWORD ii = 0;
            while (ii < NetCount2)
            {
                cout << nr2[ii].lpRemoteName << endl;
                nConnectedEnum3 = INVALID_HANDLE_VALUE;
                res = WNetOpenEnum(RESOURCE_GLOBALNET,RESOURCETYPE_ANY,0,&nr2[ii],&nConnectedEnum3);
                if (res == NO_ERROR)
                {
                    NetSize3 = sizeof(nr3);
                    NetCount3 = 0xFFFFFFFF;
                    DWORD EnumCode = WNetEnumResource(nConnectedEnum3,&NetCount3,nr3,&NetSize3);
                    iii = 0;
                    while (iii < NetCount3)
                    {
                        cout << "----" << &nr3[iii].lpRemoteName[2] << ", IP is: ";
                        GetIPFromName(&nr3[iii].lpRemoteName[2]);
                        cout << endl;
                        iii++;
                    };
                };
                ii++;
            };
        };
        i++;
    };
    return;
};
В ХР наботает нормально а вин 7 не работает (Может из-за того что на компютере с Вин 7 есть еще WiFi адаптер)

Можно ли как-то быстрее найти все IP?
Слышал о переборе и ARР запросах но не знаю как их делать.
Еще слышал про ДНС серверы но как к нему сделать запрос тоже не знаю.
евгений_8686 вне форума Ответить с цитированием
Старый 26.03.2010, 17:59   #2
евгений_8686
Новичок
Джуниор
 
Регистрация: 15.01.2008
Сообщений: 2
По умолчанию

Что никто не знает чтоли?
евгений_8686 вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как найти все открытые „xls“ файлы? roplius Microsoft Office Excel 2 03.02.2010 09:55
Компьютер не видит другие компьютеры в сети MisterKoK Операционные системы общие вопросы 5 23.11.2009 18:16
Как быстро найти все видимые окна в приложении? chandrasecar Общие вопросы Delphi 2 14.10.2009 14:52
Как найти все файлы в папке? blackstersl Общие вопросы Delphi 3 24.06.2009 16:52
Как в memo найти все e-mail'ы Черничный Общие вопросы Delphi 16 16.10.2008 09:13