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


Работа с сетью с помощью объектов Visual C++ - часть 3


Теперь откройте файл ресурсов и найдите диалоговое окно IDD_MFCSCAN_DIALOG. Дважды щелкните по нему, чтобы откорректировать в редакторе ресурсов. Удалите кнопки и Cancel, а поместите на окно диалога следующие компоненты:

  • Static Text — с надписью "Server address";
  • Edit Control — для ввода адреса сканируемого сервера (по умолчанию текст " Sample edit box ";
  • List Box — для сохранения открытых портов;
  • Button (кнопка) — с надписью "Scan" для запуска сканирования портов указанного компьютера.

У вас должно получиться нечто похожее на изображенное на рис. 4.8.

Теперь необходимо создать переменную для списка, чтобы с ним потом работать. Для этого надо щелкнуть по компоненту List Box правой кнопкой мышки и в выпадающем меню выбрать пункт Add Variable. В появившемся окне (рис. 4.9) нужно ввести в поле Variable name имя переменной. Укажите имя PortsList.

Все подготовительные работы закончены. Можно приступать к написанию кода сканера портов. Необходимо создать обработчик события, который будет срабатывать при нажатии пользователем кнопки Scan, и написать в нем весь необходимый код. Для этого щелкните правой кнопкой мышки по компоненту Button и выберите в появившемся меню пункт Add Event Handler. Перед вами откроется окно мастера Event Handler Wizard (рис. 4.10). Согласитесь со всеми установками мастера и нажмите кнопку Add and Edit.

Мастер создаст заготовку в виде пустой функции для обработчика события. В ней нужно написать код из листинга 4.5.

Рис. 4.8. Окно диалога для нашего будущего приложения

Рис. 4.9. Окно создания переменной

Рис. 4.10. Окно Мастера создания обработчика события

Листинг 4.5. Код сканера портов
void CMFCScanDlg::OnBnClickedScanButton() { // TODO: Add your control notification handler code here CClientSocket *pSocket; CString ip; CString messtr; int port;

pSocket=new CClientSocket(); pSocket->Create();

GetDlgItemText(IDC_EDIT1,ip); port=1; while (port<100) { if(pSocket->Connect(ip, port)) { messtr.Format("Port=%d opened", port); PortsList.AddString(messtr); pSocket->Close(); pSocket->Create(); } port++; } }




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



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