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


Запуск библиотеки - часть 2


Разберем каждый параметр в отдельности:

  • wVersion — версия загруженной библиотеки WinSock;
  • wHighVersion — последняя версия;
  • szDescription — текстовое описание, которое заполняется не всеми версиями;
  • szSystemStatus — текстовое описание состояния, которое заполняется не всеми версиями;
  • iMaxSockets — максимальное количество открываемых соединений. Эта информация не соответствует действительности, потому что максимальное число зависит только от доступных ресурсов. Параметр остался только для совместимости с первоначальной спецификацией;
  • iMaxUdpDg — максимальный размер дейтаграммы (пакета). Информация не соответствует действительности, потому что размер зависит от протокола;
  • lpVendorInfо — информация о производителе.

Давайте рассмотрим небольшой пример, с помощью которого будет загружаться библиотека WinSock из структуры WSAData . Создайте новый проект MFC Application. В Мастере создания приложений, в разделе Application Type выберите Dialog based, а в разделе Advanced Features — Windows sockets. Это уже знакомый вам тип приложения.

Откройте в редакторе ресурсов диалоговое окно и оформите, как на рис. 4.11. На форме должно быть 4 поля Edit Control для вывода информации о загруженной библиотеке и кнопка Get WinSock Info, по нажатию которой будут загружаться данные.

Для каждого поля вводятся переменные:

  • номер версии — mVersion;
  • последняя версия — mHighVersion;
  • описание — mDescription;
  • состояние — mSystemStatus.

Создайте обработчик события для кнопки Get WinSock Info и напишите в нем код из листинга 4.11.

Рис. 4.11. Окно будущей программы WinSockInfo

Листинг 4.11. Получение информации о WinSock
void CWinSockInfoDlg::OnBnClickedButton1() { // TODO: Add your control notification handler code here WSADATA wsaData;

int err = WSAStartup(MAKEWORD(2, 0), &wsaData); if (err != 0) { // Tell the user that WinSock not loaded return; }

char mText[255]; mVersion.SetWindowText(itoa(wsaData.wVersion, mText, 10)); mHighVersion.SetWindowText(itoa(wsaData.wHighVersion, mText, 10)); if (wsaData.szDescription) mDescription.SetWindowText(wsaData.szDescription); if (wsaData.szSystemStatus) mSystemStatus.SetWindowText(wsaData.szSystemStatus); }




Начало  Назад  Вперед



Книжный магазин