
- •1Введение в программное обеспечение компьютерных сетей.
- •2Основные понятия и определения компьютерных сетей
- •3Опорная модель osi. Общие сведения, история
- •4Уровни модели osi
- •5Характеристики уровней модели osi
- •6Основные протоколы компьютерных сетей
- •8Альтернативные сетевые протоколы
- •Протоколы Microsoft и других разработчиков
- •Тема 3.Стек osi
- •9. Стандарт сетевых протоколов
- •10. Описание команд сетевых протоколов
- •11. Клиент-серверная модель вычислений
- •12. Распределенные вычисления. Параллельные вычисления
- •13. Сетевое по общего назначения
- •14. Программное обеспечение поиска неисправностей в сетях
- •15. Программное обеспечение анализа и моделирования сетей
- •16. Программное обеспечение анализа и оптимизации сети
- •17. Интерфейс сетевой базовой системы ввода-вывода
- •18.Удаленный вызов процедур
- •19. Инициализация приложения и завершение его работы
- •20. Создание и инициализация сокета. Удаление сокета
- •21. Параметры сокета и привязка к адресу
- •22. История и основные концепции сети InterNet
- •23. Принципы адресации в InterNet
- •24. Встроенное программное обеспечение операционной системы для работы с InterNet
- •25. Организация работы и взаимодействия встроенных программных средств операционной системы и InterNet
- •26. Альтернативное программное обеспечение для работы с InterNet
- •27. Гипертекстовая разметка страниц в InterNet. Работа с браузерами и ftp серверами
- •28. Язык описания сценариев html и его расширения
- •29 Создание простых html форм Вариант 1
- •Вариант 2
- •30. Язык Java программирования в сети Internet
- •31. Языки JavaScript, vbScript и PerlScript
- •32Клиент-серверная и файл-серверная технологи. Преимущества и недостатки
19. Инициализация приложения и завершение его работы
В процессе инициализации приложение должно зарегистрировать себя в библиотеке WSOCK32.DLL, которая предоставляет приложениям интерфейс WindowsSocketsв среде операционных систем Microsoft Windows’9x и Windows’NT.
Для инициализации необходимо вызвать функцию WSAStartup, прототип которой имеет вид:
int
WSAStartup(WORD wVersionRequested,
LPWSADATA lpWSAData);
В параметре wVersionRequestedуказывается версия интерфейса WindowsSockets, необходимая для работы приложения. Старший байт параметра указывает младший номер версии (minorversion), младший байт – старший номер версии (majorversion).
Перед вызовом функции WSAStartupпараметр lpWSADataдолжен содержать указатель на структуру типа WSADATA, в которую будут записаны сведения о конкретной реализации интерфейса WindowsSockets.
В случае успеха функция WSAStartupвозвращает нулевое значение. Если происходит ошибка, возвращается одно из следующих значений
Приложение может одновременно создать несколько сокетов, например, для использования в разных подзадачах одного процесса. В поле iMaxSocketsхранится максимальное количество сокетов, которое можно получить для одного процесса. В поле iMaxUdpDgзаписан максимальный размер пакета данных, который можно переслать с использованием датаграммного протокола UDP; поле lpVendorInfoсодержит указатель на дополнительную информацию, формат которой зависит от фирмы-изготовителя конкретной реализации системы WindowsSockets.
Перед тем как завершить свою работу, приложение должно освободить ресурсы, полученные у операционной системы для работы с WindowsSockets. Для выполнения этой задачи приложение должно вызвать функцию WSACleanup, определенную следующим образом:
int
WSAСlеаnup(void);
Эта функция может возвратить нулевое значение при успехе или значение SOCKET_ERROR в случае ошибки.
Для получения кода ошибки следует воспользоваться функцией с именем WSAGetLastError:
int
WSAGetLastError(void);
Функция WSAGetLastErrorпозволяет определить код ошибки при неудачном завершении практически всех функций интерфейса WindowsSocket. Ее следует вызывать сразу вслед за функцией, завершившейся неудачно.
Если ошибка возникла при выполнении функции WSACleanup, функция WSAGetLastErrorвозращает одно из следующих значений
Представляет интерес случай возврата кода ошибки WSAEINPROGRESS.
Некоторые функции интерфейса WindowsSocketsспособны блокировать работу приложения, т.к. не возвращают управления вызывающей программе до своего завершения. В использующих вытесняющую многозадачность ОС (таких, как Windows’95x и Windows’NT) это не приводит к блокировке всей системы, однако можно избежать блокирующих функций путем использования предоставляемых WindowsSocketsасинхронных аналогов этих функций.
20. Создание и инициализация сокета. Удаление сокета
Создание и инициализация сокета.
После инициализации интерфейса WindowsSocketsприложение должно создать один или несколько сокетов, которые будут использованы для передачи данных.
Сокет создается с помощью функции socket, имеющей следующий прототип:
SOCKET
socket(intaf, int type, int protocol);
Параметр afопределяет формат адреса. Для этого параметра следует указывать значение AF_INET, что соответствует формату адреса, принятому в InterNet. Параметры typeи рrоtосоlопределяют соответственно тип сокета и протокол, который будет использован для данного сокета, можно указывать сокеты следующих двух типов
Что же касается параметра protocol, то для него следует указать нулевое значение.
В случае успеха функция socketвозвращает дескриптор (тип SOCKET), который следует использовать для выполнения всех операций над данным сокетом; имеется прямая аналогия между дескрипторами файла и сокета, однако над последним не определены некоторые (физически недопустимые для сокета) операции (например, позиционирование указателя в потоке). Если же произошла ошибка, функция socketвозвращает значение INVALID_SOCKET. Для анализа причины ошибки следует вызвать функцию WSAGetLastError, которая в данном случае может вернуть один из следующих кодов ошибки
Удаление сокета
Для освобождения ресурсов приложение должно закрывать сокеты, которые ему больше не нужны, вызывая функцию closesocket
int
closesocket(SOCKET sock);
Ниже перечислены коды ошибок для этой функции
Код ошибки
|
Описание |
WSANOTINITIALISED |
Перед использование функции closesocketне была вызвана функция WSAStartup
|
WSAENETDOWN |
Сбой в сети |
WSANOTSOCK |
Указанный в параметре дескриптор не является дескриптором сокета
|
WSAINPROGRESS |
Выполняется блокирующая функция интерфейса WindowsSockets
|
WSAEINTR |
Работа функции была отменена при помощи функции WSACancelBlockingCall |