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

Если вы не собираетесь писать программы только с использованием Win API, то даже для эффективного использования стандартных решений желательно понимать принципы работы сетевых протоколов и библиотеки WinSock. Я буду подразумевать, что с протоколами вы уже знакомы. Давайте разберемся с функциями, которые предоставляет нам WinSock.

Существует несколько версий этой библиотеки. Начиная с Windows 98 в ОС уже встроена 2-я версия. Если вы обладатель Windows 95, то для работы нужно "скачать" новую версию с сайта www.microsoft.com или скопировать с компакт-диска из каталога Program.

Библиотека WinSock обратно совместима. Это значит, что старые функции не изменились и программы, написанные для первой версии, будут прекрасно работать во второй. Работа старых программ будет происходить корректно, потому что функции не изменились, а главное, не изменилось количество параметров и их тип. Вместо этого Microsoft добавила новые, более мощные функции, имена которых начинаются с WSA. Впервые функции с такими именами появились в версии 1.1, и это были WSAStartup, WSACleanup, WSAGetLastError, WSARecvEx. В следующей версии начали применяться другие варианты функций для приема/передачи данных.

Имея в наличии вторую версию WinSock, не обязательно ее использовать. Посмотрите, может быть, возможностей первой версии будет достаточно, и тогда ваша программа будет работать на всех платформах. При этом код легко можно будет перенести даже на платформу Unix. Конечно же, компьютеры, с установленной на них Windows 95, встретить уже достаточно сложно, но они существуют. Я иногда общаюсь с иностранными пользователями, когда у них возникают проблемы с моими программами именно в этой ОС Windows 95 установлена в основном на старых компьютерах, на которых новые версии не работают, а выбрасывать железный "хлам" жалко.

При необходимости применения возможностей, которые добавлены во второй версии WinSock, пользователям старых компьютеров нужно обновлять библиотеку.

Если в вашей программе применяются функции второй версии WinSock, то придется загружать именно эту версию. При этом я рекомендую включить в программу установки возможность обновления сетевой библиотеки Windows.

В отличие от Visual С++, где есть два заголовочных файла для разных версий (WinSock.h для первой версии и WinSock2.h для второй версии), в Delphi имеется только один модуль WinSock, который описывает все функции сетевой библиотеки версий 1 и 1.1. Если вам нужны функции только WinSock 1, то нужно применять специальный модуль. Для этого поместите его в каталог с исходным кодом вашей программы, и оболочка будет использовать именно этот файл, а не системный.

Заголовочный файл, который поставляется с Delphi, сформирован не очень удачно. Чтобы получить доступ ко всем функциям WinSock 2, нужно использовать добавочный файл. Я рекомендую взять WinSock2.pas из каталога Additional\WinSock 2 на компакт-диске к данной книге.

Первая версия WinSock разрабатывалась на основе модели сокетов Беркли, используемой в системах Unix. Названия функций, количество параметров и их тип были одинаковыми (имелись только небольшие отличия). Таким образом, если написать на языке С код, работающий с сетями, то возможно перенести его с минимальными изменениями в систему Unix и откомпилировать любым Unix-подобным компилятором языка С.

В более поздних версиях библиотеки Microsoft стала добавлять свои дополнительные функции для упрощения жизни программистов и повышения производительности на платформе Windows. Это достигалось путем использования специфичных для Windows технологий (такие, как события). Данные функции не совместимы с сетевыми функциями на других платформах, и такой код перенести намного сложнее.

В последнее время у Delphi тоже появился компилятор для ОС Linux, который может компилировать программы, написанные на Delphi под Windows. Если вы будете использовать функции только WinSock 1, то перенос будет простым. С применением функций второй версии библиотеки, специфичных для платформы Windows, перенос программы в Kylix вызовет проблемы.

Давайте подробно рассмотрим, как устроена сетевая библиотека Windows и как с ней работать.

Сетевые приложения || Оглавление || 4.2. Обработка сетевых ошибок


Delphi в шутку и всерьез: что умеют хакеры



Новости за месяц

  • Декабрь
    2021
  • Пн
  • Вт
  • Ср
  • Чт
  • Пт
  • Сб
  • Вс
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31