Программирование на C++ глазами хакера

         

У функции GetTcpTable три параметра:


char prtStr[1000]; sprintf(prtStr, "Loc Addr %1s; Loc Port %1u; Rem Addr %1s; Rem Port %1u; State %s;", szLocalIp, ntohs((unsigned short) (0x0000FFFF & pTcpTable->table[i].dwLocalPort)), szRemIp, ntohs((unsigned short)(0x0000FFFF & dwRemotePort)), strState); lList.AddString(prtStr); } } free(pTcpTable); }

У функции GetTcpTable три параметра:

  • структура типа PMIB_TCPTABLE;


  • размер структуры, указанной в качестве первого параметра;


  • признак сортировки — если указано TRUE, то таблица будет отсортирована по номеру порта, иначе данные будут представлены в перемешанном виде.


  • Если в качестве первых двух параметров указать нулевое значение, то во втором параметре будет получен необходимый размер для хранения структур PMIB_TCPTABLE. Этот прием мы уже не раз использовали в главе 5.

    Память определенного размера выделяется функцией malloc. В данном случае это необязательно делать в глобальной области.

    Повторный вызов функции GetTcpTable позволяет через первый параметр (переменная рТсрTаblе типа PMIB_TCPTABLE) получить данные о состоянии всех TCP-портов. Их количество находится в параметре dwNumEntries структуры рТсрTаblе. Информацию об определенном порте можно узнать из параметра table[i], где i — номер порта. Этот параметр тоже является структурой, и в нем нас интересуют следующие элементы:

  • dwState — состояние порта. Этот параметр может принимать различные значения (MIB_TCP_STATE_LISTEN, MIB_TCP_STATE_CLOSED и т. д.). Список всех констант можно найти в коде программы или в справочной системе. Назначение констант просто определить, достаточно только внимательно посмотреть на код из листинга 6.3;


  • dwLocalPort — локальный порт;


  • dwRemotePort — удаленный порт;


  • dwLocalAddr — локальный адрес;


  • dwRemoteAddr — удаленный адрес.


  • В примере запускается бесконечный цикл, который перебирает все записи из параметра table, и информация добавляется в список List Box.



    Рис. 6.4. Результат работы программы IPState

    Для правильной компиляции программы в начале модуля надо подключить три заголовочных файла:


    Содержание  Назад  Вперед







    Forekc.ru
    Рефераты, дипломы, курсовые, выпускные и квалификационные работы, диссертации, учебники, учебные пособия, лекции, методические пособия и рекомендации, программы и курсы обучения, публикации из профильных изданий