- •«Дальневосточный федеральный университет»
- •Школа естественных наук материалы практических занятий
- •Определение установок сетевого адаптера
- •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
1. Теоретическое введение
В теоретическом введении рассматриваются следующие вопросы.
Назначение протокола NetBIOS.
Назначение протокола NetBEUI.
Принципы работы с NetBIOS.
1.1. Назначение протокола NetBios
NetBIOS только формирует данные для передачи, а физически передаваться они могут только с помощью другого протокола, например, TCP/IP, SPX/SPX и т. д. Это значит, что NetBIOS является независимым от транспорта. Если другие варианты протоколов верхнего уровня (только формирующие пакеты, но не передающие) привязаны к определенному транспортному протоколу, который должен передавать сформированные данные, то пакеты NetBIOS может передавать любой другой протокол. Следовательно, сетевая программа, работающая через NetBIOS, будет работать как в unix/windows сетях через TCP, так и в Novell-сетях через IPX.
Вместе с тем, для того, чтобы два компьютера смогли соединиться друг с другом с помощью NetBIOS, необходимо чтобы на обоих стоял хотя бы один общий транспортный протокол. Если один компьютер будет посылать NetBIOS пакеты с помощью TCP, а другой - с помощью IPX, то эти компьютеры друг друга не поймут. Транспорт должен быть одинаковый.
Стоит сразу же отметить, что не все варианты транспортных протоколов по умолчанию могут передавать по сети пакеты NetBIOS. Например, IPX/SPX сам по себе этого не умеет. Чтобы его обучить, нужно иметь «NWLink IPX/SPX/NetBIOS Compatible Transport Protocol».
Так как NetBIOS чаще всего использует в качестве транспорта протокол TCP, который работает с установкой виртуального соединения между клиентом и сервером, то по этому протоколу можно передавать достаточно важные данные.
Целостность и надежность передачи будет осуществлять TCP/IP, a NetBIOS дает только удобную среду для работы с пакетами и программирования сетевых приложений.
1.2. Назначение протокола NetBeui
В 1985 году фирма IBM сделала попытку превратить NetBIOS в полноценный протокол, который умеет не только формировать данные для передачи, но и физически передавить их по сети. Для этого был разработан протокол NetBEUI (NetBIOS Extended User Interface, расширенный пользовательский интерфейс NetBIOS), который был предназначен именно для описания физической части передачи данных протокола NetBIOS.
NetBEUI является не маршрутизируемым протоколом и первый же маршрутизатор не пропустит его. Следовательно, если между двумя компьютерами стоит маршрутизатор и нет другого пути для связи, то им не удастся установить соединение через NetBEUI.
1.3. Принципы работы с NetBIOS
В работе рассматриваются только основные принципы работы с протоколом NetBIOS.
В Windows за работу NetBIOS отвечает библиотека netapi32.dll. Следовательно, при программировании на Delphi необходимо подключить заголовочный файл nb.pas (или nb30.pas).
Протокол NetBIOS достаточно прост, потому что API-протокол состоит только из одной функции NetBIOS, которая имеет множество функций, Описание функции NetBIOS имеет следующий вид:
NetbiosCmd(var NCB: TNCB): Word;.
У этой функции только один параметр структура NCB. Это достаточно сложная структура, в которой и заключена вся работа. С ее помощью указываются команды, которые надо выполнить, а также записываются передаваемые и принимаемые данные.
Описание структуры NCB для Windows выглядит следующим образом:
TNCB=paсked record
Command: byte;
RetCode: byte;
LSN:byte;
Num: byte;
Buf: ^byte;
Length: word;
CallName: TNBName;
Name: TNBName;
RTO: byte;
STO: byte;
PostPrc: TNCBPostProc;
Lana_Num: byte;
Cmd_Cplt: byte;
Reserved: array[0..9] of byte;
Event; THandle;
end;.
Первый параметр (Command) указывает на команду, которую необходимо выполнить. В [1, 3] приведено описание команд протокола NetBIOS.
Второй параметр (RetCode) содержит код результата выполнения команды. Если команда выполняется асинхронно, то NetBIOS не сможет сразу вернуть результат. Поэтому в этом случае сюда будет помещено значение $ff или константа NRC_PENDING, которая означает, что асинхронная команда еще не выполнена. Константы возвращаемых значений можно найти в заголовочном файле, и начинаются они с NRC .
Параметр LSN - номер локального сеанса, который получают после выполнения команд NCB CALL (открыть сессию) и NCB LISTEN (ждать вызова).
Num – номер сетевого имени. Такие номера получаются после вызова команд NCB_ADDNAMЕ (добавить уникальное имя в локальную таблицу) и NCB_ADDGRPNAME (добавить имя группы в локальную таблицу).
Следующий параметр (Buf) - это буфер, в котором нужно размещать данные для отправки в сеть или получить данные, принятые из сети.
Length - длина буфера. По этому числу библиотека сможет узнать, сколько данных приложение пользователя хочет отправить в сеть или сколько данных получено.
Параметр CallName – это имя удаленного приложения.
Противоположность предыдущему Name - имя вашей программы.
Далее идет RTO – время ожидания (time-out) при получении данных. Указывается число единиц времени, а одна единица равна 500 миллисекундам. Значит, если указать число 2, то мы попросим ожидать приема ровно 1 секунду.
Противоположностью предыдущему является S'I'O - время ожидания отправки данных по сети. Также указывается в единицах, где одна единица равна 500 миллисекундам.
PostPrc указывает на процедуру, которую необходимо выполнить после выполнения команды в асинхронном режиме. Такая процедура должна иметь вид
ТNCBPostProc = procedure(P: PNCB);.
Это значит, что она обязана иметь один и только один параметр в виде переменной типа PNCB, т. е. она - указатель на структуру TNCB. Lana_Num - номер адаптера, с которым необходимо работать.
Cmd_cplt – это код выполнения команды. Здесь также при асинхронной работе будет стоять значение $ff или константа NRC_PENDING.
Reserved – зарезервированный параметр, должен равняться нулю.
Event - событие. Его удобно использовать при работе и асинхронном режиме, когда необходимо узнать, момент окончания выполнения асинхронной операции.
