- •«Дальневосточный федеральный университет»
- •Школа естественных наук материалы практических занятий
- •Определение установок сетевого адаптера
- •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
Занятие 6. Поиск доступных сетевых ресурсов
Доступные ресурсы – это любые ресурсы компьютера (директории, дисциплины или принтеры), к которым открыт свободный доступ из сети. Если компьютер подключен к локальной сети, то для обмена файлами чаще всего делают доступными какой–нибудь диск или папку. Если компьютер имеет ещё и выход в Интернет, то к этим ресурсам можно получить доступ из любой точки Земли, если не приняты меры предосторожности.
Чтобы автоматизировать процесс поиска, используют специальные сканеры доступных ресурсов.
Цель работы: практически освоить создание простейшего сканера доступных сетевых ресурсов.
1. Теоретическое введение
В теоретическом введении рассматриваются следующие вопросы.
Алгоритм поиска сетевых ресурсов
Структура и функции для работы с сетевыми ресурсами.
Алгоритм поиска сетевых ресурсов
Поиск сетевых ресурсов происходит по следующему алгоритму:
Заполнение структуры NETRESOURSE для определения компьютера, на котором осуществляется поиск, и типа сетевых ресурсов.
Открытие операции поиска с помощью функции WNetOpenEnum
Поиск ресурсов с помощью циклического повторения функции WNetEnumRESOURСE. Результат поиска возвращается в массив структур NETRESOURСE.
Прекращение операции поиска WNetCloseEnum.
1.2. Структуры и функции для работы с сетевыми ресурсами
Для записи информации о ресурсах используется структура NETRESOURSE, состоящая из следующих полей:
NETRESOURСE=packed record
dwScope: DWORD;
dwType: DWORD;
dwDisplayType: DWORD;
dwUsage: DWORD;
lpLocalName: PAnsiChar;
lpRemoteName: PAnsiChar;
lpCommet: PAnsiChar;
lpProvider: PAnsiChar;
end;,
где dwScope – какие ресурсы будут включаться в перечисление. Возможны комбинации следующих значений:
RESOURСE_GLOBALNET – все ресурсы сети;
RESOURСE_CONNECTED – подключение;
RESOURСE_REMEMBERED – запоминание;
где dwType – тип ресурсов, включаемых в перечисление. Возможны комбинации следующих значений:
RESOURCETYPE_ANY – все ресурсы сети;
RESOURCETYPE_DISK – сетевые диски;
RESOURCETYPE_PRINT – сетевые принтеры;
где dwUsage – тип использования ресурсов, включаемых в перечисление. Возможны следующие значения:
0 - все ресурсы сети;
RESOURCEUSAGE_CONNECTABLE - подключение;
RESOURCEUSAGE_CONTAINER – контейнерные;
dwDisplayType – как должен отображаться ресурс:
RESOURCEDISPLAYTYPE_DOMAIN – это домен;
RESOURCEDISPLAYTYPE_GENERIC – нет значения;
RESOURCEDISPLAYTYPE_SERVER – сервер;
RESOURCEDISPLAYTYPE_SHARE – разделяемый ресурс;
lpLocaiName — локальное имя. Этот параметр нужно обнулить.
lpRemoteName — удалённое имя. Здесь нужно указать UNC-имя сканируемого компьютера. Если вы указываете адрес, то вначале нужно прибавить два слеша «\\».
ipCommet – комментарий;
ipProvider — имя владельца ресурса. Если оно не известно, то нужно указать nil.
После заполнения структуры нужно открыть процесс сканирования. Для этого существует функция WNetOpenEnum, имеющая структуру
function WNetOpenEnum (
dwScope,
dwType,
dwUsage: DWORD;
lpNetResource: PNetResourсe;
var lphEnum: Thandle
): DWORD; stdcall;,
где параметры dwScope, dwType, dwUsage уже рассматривались;
lpNetResource – указатель на структуру NETRESOURSE. Если этот параметр равен 0 , то перечисление начинается с самой верхней ступени иерархии сетевых ресурсов. Нуль ставится для того, чтобы получить самый первый ресурс. Затем в качестве этого параметра передаётся указатель на уже найденный ресурс. Тогда перечисление начинается с найденного и продолжится дальше, пока не найдутся все ресурсы;
lpnEnum – переменная типа THandle, которая будет использоваться в дальнейшем. После того как перечисление открыто, можно приступить к его реализации (это указатель, который понадобится в функции WNetEnumRESOURСE).
Для сканирования вызывается функция wNetEnumRESOURСE. Когда функция wNetEnumRESOURСE заканчивает перечисление, вызывается функция WNetCloseEnum.
Функция WNetEnumRESOURСE используется для поиска требуемых ресурсов. Эта функция имеет следующий вид:
function WNetEnumRESOURСE(
hEnum: THandle;
var IpcCount: DWORD;
lpBuffer: Pointer;
var lpBufferSize: DWORD
): DWORD; stdcall;,
где hEnum – указатель на возвращаемое функции WNetOpenEnum значение;
lpcCount – максимальной количество возвращаемых значений. После выполнения функция поместит сюда фактическое число найденных ресурсов;
lpBuffer – указатель на буфер, в который будет помещён результат. Массив структур TnetResource. Его длина должна быть достаточной для хранения возвращённой информации об открытых ресурсах;
lpBufferSize – размер массива, указанного предыдущем параметре.
Если поиск ресурсов произошел успешно, функция WNetEnumRESOURСE возвращает значение NO_ERROR.
Для прекращения операции поиска вызывается функция WNetCloseEnum, имеющая следующие параметры:
Function WNetCloseEnum (hEnum: THandle) ): DWORD; stdcall;,
Где в качестве hEnum нужно указать ту же переменную, которую указывали в последнем параметре при открытии перечисления wNetOpenEnum.
