background image

Глава 5

 на низком уровне

Под работой с сетью на низком уровне я буду понимать использование

функций Windows библиотеки WinSock. Работать с ней сложнее, чем с ком-
понентами, потому что многие вещи приходится делать вручную. Но все же
я посвящу этому процессу целую главу, чтобы вы могли хотя бы понимать,

как работает сеть, даже если не захотите программировать чисто на WinSock.

Я сам стараюсь использовать библиотеку Windows очень редко, потому что
в компонентах Delphi заложено много проверок и защит от примитивных

ошибок, которые случаются всегда, даже у профессионалов. Но все же

иногда от WinSock никуда не деться. Например, в этой главе я покажу, как

написать самый быстрый сканер портов. С помощью компонентной модели,
встроенной в Delphi, это сделать невозможно, а сторонние разработчики

предлагают слишком сложные в использовании решения. Именно поэтому

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

5.1. Основные функции WinSock

Библиотека WinSock состоит из одного лишь файла Winsock.dll. Она очень

хорошо подходит для создания простых приложений, потому что в ней реа-
лизовано все необходимое для создания соединения и приема/передачи

файлов. Зато снифер создавать даже не пытайтесь. В WinSock нет ничего

для доступа к заголовкам пакетов. MS обещала встроить эти необходимые

продвинутому программисту вещи в WinSock2, но как всегда все закончи-

лось только словами.

Чем хороша эта библиотека, так это тем, что все ее функции одинаковы для

многих платформ и языков программирования. Так, например, когда мы

напишем сканер портов, его легко можно будет перенести на язык C/C++

и даже написать что-то подобное в *nix, потому что там сетевые функции
называются так же и имеют практически те же параметры. Разница между
сетевой библиотекой Windows и Linux минимальна, хотя и есть. Но так