- •«Дальневосточный федеральный университет»
- •Школа естественных наук материалы практических занятий
- •Определение установок сетевого адаптера
- •2.3. Определение сетевого адреса и маски сети
- •Разграничение доступа к сетевым ресурсам
- •2.5. Проверка сетевого соединения в tcp/ip - сетях.
- •1. Теоретическое введение
- •Имена почтовых ящиков.
- •1.2. Сервер почтовых ящиков
- •1.3 Пример создания сервера почтовых ящиков
- •1.4. Клиент почтовых ящиков
- •1.5 Создания клиента почтовых ящиков
- •2. Задание по практическому занятию
- •2.1. Создание серверного приложения
- •1. Теоретическое введение
- •1.2. Процедуры и функции Win32 для работы с файлами
- •1.2.1. Создание или открытие файла
- •1.2.2. Запись в файл
- •1.2.3. Чтение из файла
- •1.2.4. Закрытие файла
- •1.3. Пример программы, использующей функции Win32 для доступа к файлам и каталогам
- •1.4. Функции Delphi для работы с файлами
- •1.4.1. Открытие и закрытие файла
- •1.4.2. Типы файлов
- •1.4.3. Обработка ошибок при работе с файлами в Delphi
- •1.5. Пример программы, использующей функции Delphi для доступа к файлам и каталогам
- •2. Задание по лабораторной работе
- •1. Теоретическое введение
- •Пример создания сервера именованных каналов, работающего в блокирующем режиме
- •Пример создания клиента именованных каналов
- •Задание по практическому занятию
- •Создание серверного приложения,
- •Создание клиентского приложения,
- •2.3. Расширение возможностей именованных каналов
- •1. Теоретическое введение
- •1.1. Особенности организации работы именованных
- •2. Задание по практическому занятию
- •2.1. Создание серверного приложения
- •2.2. Создание клиентского приложения
- •Занятие 6. Поиск доступных сетевых ресурсов
- •1. Теоретическое введение
- •Алгоритм поиска сетевых ресурсов
- •1.2. Структуры и функции для работы с сетевыми ресурсами
- •2.Задание по практическому занятию
- •1. Теоретическое введение
- •1.1. Назначение протокола NetBios
- •1.2. Назначение протокола NetBeui
- •2. Задание по практическому занятию
- •Занятие 8. СокетыWindows. Создание клиент-серверного приложения работающего по протоколуUdp
- •1. Теоретическое введние
- •1.1. Сокеты windows
- •1.2. Функции winsock для протокола udp
- •1.2.1. Инициализация интерфейса сокетов
- •1.2.2. Создание сокета
- •1.2.3. Определение номера порта и ip-адреса, по которому сервер будет принимать данные
- •1.2.4. Передача данных
- •2. Задание по практическому занятию
- •2.2. Создание клиентского приложения
- •2.3. Реализация возможностей функций Winsock по передаче данных между различными компьютерами в сети
- •Занятие 9. Исследование возможностей использования сокетов windows для организации обмена информацией между клиентом и сервером по протоколу тср
- •1. Теоретическое введение
- •1.1. Функции Winsock для протокола tcp
- •1.1.1. Установление соединения
- •1.1.3. Блокирование выполнения программы до тех пор, пока не поступит запрос на установление соединения
- •1.1.4. Передача данных
- •1.1.5. Получение данных по сети
- •1.2. Алгоритм работы Winsock- приложения по протоколу tcp
- •2. Задание по лабораторной работе
- •2.1. Создание серверного приложения
- •2.2. Создание клиентского приложения
- •2.3. Исследование возможностей функций Winsock по передаче данных между различными компьютерами в сети
- •Занятие 10. Исследование методов сканирования сети
- •1. Теоретическое введение
- •2.1. Создание многопоточного приложения для сканирования сети
- •2.2. Исследование различных методов сканирования сети
- •Занятие 11. Применение сокетного соединения для обеспечения сетевого взаимодействия клиента и сервера
- •1. Теоретическое введение
- •1.1. Компоненты Delphi, инкапсулирующие сокеты
- •1.2. Компоненты Delphi tcpserver и tcpcl1ent
- •1.2.1. Установление соединения
- •1.2.2. Синхронизация сокетов
- •1.2.3. Класс TserverWinsocket
- •1.2.4. Компонент TserverSocket
- •1.2.5. Класс tClientWinsocket
- •1.2.6. Компонент tClientSocket
- •2. Задание по практическому занятию
- •2.1. Создание серверного приложения
- •2.2. Создание клиентского приложения
- •1. Задание по лабораторной работе
- •1.1. Создание серверного приложения
- •1.2. Создание клиентского приложения
- •1.3. Исследование возможностей сервер-приложения
- •1. Теоретическое введение
- •2. Задание по практическому занятию
- •Занятие 14. Исследование возможностей поддержки протокола тср
- •1. Теоретическое введение
- •1.1. Методы indy-компонента- IdTcpClient
- •1.2. Методы indy-компонента - IdTcpServer
- •2. Задание по лабораторной работе
- •2.1. Создание серверного приложения
- •2.2. Создание клиентского приложения
- •Занятие 15. Программирование клиентских приложений для работы с серверами internet
- •1. Теоретическое введение
- •Библиотека WinInet
- •1.2. Функции библиотеки wininet
- •1.2.1. Функция создания сеанса связи InternetOpen
- •1.2.2. Функция установления url-соединения InternetOpenUrl
- •1.2.3. Функция чтения файла, находящегося на web-cepвepe InternetReadFile
- •1.2.4. Функция закрытия дескриптора – InternetCloscHandle
- •1.2.5. Функция установления соединения InternetConnect
- •1.2.6. Функция «Найти первое вхождение файла с указанным групповым именем» FtpFindFirstFile
- •1.2.7. Функция «Найти следующие вхождения файла с указанным групповым именем» InternetFindNextFile
- •1.2.8. Функция «Получить имя текущего Каталога на ftp-сервере» -FtpGetCurrentDirectory
- •1.2.9. Функция чтения файла с http-сервера FtpGetFile
- •2. Задание по практическому занятию
- •2.1. Создание клиентского приложения.
- •Занятие 16. Приём и передача файлов по сети с использованием протокола tftp
- •1. Теоретическое введение
- •1.1. Протокол tftp
- •1.2. Компонент- idTrivialFtp
- •Компонент IdTrivialFtpServer
- •2. Задание по практическому занятию
- •2.1. Создание серверного приложения
- •2.2. Создание клиентского приложения
- •Занятие 17. Создание http- клиента
- •1. Теоретическое введение
- •1.1. Свойства и методы компонента IdHttp
- •1.1.1. Метод get
- •1.1.2. Метод trace
- •1.1.3. Метод put
- •2. Задание по практическому занятию
- •2.1. Создание http-клиента
- •4. Как изменить приложение таким образом, чтобы файл с сервера записывался не в поле Memo, а в какой-либо файл на компьютере клиента? Каким должен быть тип переменной s в данном случае?
- •Тексты заданий самостоятельной работы задание № 1 создание web-браузера
- •1. Теоретическое введение
- •2. Задание по практическому занятию
- •Задание № 2 исследование telnet-клиента
- •1. Теоретическое введение
- •2. Задание по практическому занятию
- •2.1. Создание приложения Telnet-клиента
- •2.2. Исследование Telnet-клиента
- •Задание №3 разработка cgi-программ
- •1. Теоретическое введение
- •1.1. Принцип работы cgi-программ
- •1.2. Описание тега form
- •1.2.1. Тег input
- •1.2.2. Тег select
- •1.2.3. Тег textarea
- •13. Подтверждение и посылка запроса cgi-программе
- •2. Задание по практическому занятию
- •2.1. Создание простейшего серверного приложения
- •2.2. Передача cgi-приложению параметров, введенных пользователем, и получение дополнительной информации из переменных окружения
- •Задание № 4 разработка web-приложения
- •1. Теоретическое введение
- •1.1. Общее описание компонента twebmodule
- •1.2. Параметр request
- •1.3. Параметр response
- •1.4. События twebmodule
- •2. Задание по практическому занятию
- •2.1. Создание web-приложения с помощью компонента Delphi -webmodule
Занятие 8. СокетыWindows. Создание клиент-серверного приложения работающего по протоколуUdp
В предлагаемой работе рассматриваются функции библиотеки Windsock для работы с протоколами, неориентированными на соединение. Протокол UDP стека TCP/IP является именно таким протоколом.
Цель работы: освоить возможности клиент-серверных приложений, работающих по протоколу UDP, и получить практику их программирования на основе сокетов Windows.
1. Теоретическое введние
В теоретическом введении рассматриваются следующие вопросы.
Назначение сокетов WINDOWS.
Функции WINSOCK для протокола UDP.
Алгоритм работы WINSOCK-приложения но протоколу UDP.
1.1. Сокеты windows
Для работы с протоколами транспортного уровня а ОС Windows используется библиотека сокетов — Winsock.dll. В Windows 2000 входит Winsock версии 2.2.
Один из фундаментальных вопросов сетевого программирования - это различие, между протоколами, требующими установления логического соединения, и протоколами, не требующими логического соединения.
При работе с протоколом, не требующим соединения, каждый пакет, именуемый датаграммой, адресуется и посылается приложением индивидуально. То есть каждая датаграмма - это независимая единица, не имеющая ничего общего с остальными датаграммами, которыми обмениваются приложения. Обычно это означает, что клиент и сервер не ведут сложного диалога - клиент посылает запрос, а сервер отвечает на него. Если позже клиент посылает новый запрос, то с точки зрения протокола это новая транзакция, не связанная с предыдущей. Кроме того, протокол не надежен, то есть не гарантируется, что датаграммы не будут потеряны или будут доставлены в том же порядке.
Протоколы, требующие установления соединения, самостоятельно отслеживают состояние пакетов, поэтому они используются в приложениях, ведущих развитый диалог. Сохраняемая информация о состоянии позволяет протоколу обеспечить надежную доставку. Например, отправитель запоминает, когда и какие данные послал, но они еще не подтверждены. Если подтверждение не приходит в течение определенного времени, отправитель повторяет передачу. Получатель запоминает, какие данные уже принял и отбрасывает пакеты-дубликаты.
Если пакет поступает не в порядке очередности, то получатель может «придержать» его, пока не придут логически предшествующие пакеты. У типичного протокола, требующего наличия соединения, есть три фазы. Сначала устанавливается соединение между двумя приложениями. Затем происходит обмен данными. И, наконец, когда оба приложения завершили обмен данными, соединение разрывается.
Далее рассматриваются функции библиотеки Windsock для работы с протоколами UDP стека TCP/IP, неориентированными на соединение.
1.2. Функции winsock для протокола udp
При работе по протоколу UDP должна выполняться нижеописанная последовательность команд.
1.2.1. Инициализация интерфейса сокетов
function WSA Startup(
wVersionRequired: word;
var WSData: TWSAData
): Integer; stdcall;.
Параметр wVersionRequested задает версию загружаемой библиотеки Winsock. Старший и младший байты определяют дополнительный и основной номера версии библиотеки соответственно, Для получения значения параметра wVersionRequested можно использовать макрос МАКEWORD(x, у), где х - старший байт, а у - младший.
Параметр WSData - указатель на структуру WSAData, которая при вызове функции WSAStartup заполняется сведениями о версии загружаемой библиотеки:
WSAData=record
wVersion: Word;
wHighVersion: Word;
szDescription: array[0..WSADESCRIPTION_LEN] of Char;
szSystemStatus: array[0..WSASYS_STATUS_LEN] of Char;
iMaxSockets: Word;
iMaxUdpDg: Word;
lpVendorInfo: PChar;
end;.
WSAStartup присваивает параметру wVersion значение загружаемой версии. Параметр wHighVersion содержит номер последней доступной версии Winsock. Причем в обоих полях старший байт определяет дополнительный, а младший - основной номер версии.
Поля szDescription и szSystemStatus заполняются не во всех реализациях Winsock и практически не применяются.
Не используйте и поля iMaxSockets и MaxUdpDg. Предполагается, что в них заданы максимальное количество одновременно открытых сокетов и максимальный размер датаграммы. Максимальное количество одновременно открытых сокетов зависит от свободной физической памяти.
Поле IpVendorInfo зарезервировано для информации изготовителя реализации Winsock и не используется ни на одной из платформ Win32.
Разные платформы Windows поддерживают следующие версии Winsock: Windows 95 - 1.1; Windows 98, NT 4.0, 2000 - 2.2.
