105
2.Свойство Address для TClientSocket установить в 127.0.0.1, свойство Host задать равным localhost, свойство Port — такое же, как и для TServerSocket. Эти параметры задают компьютер, к которому будет подключаться клиент. Задавать его можно либо по IP-адресу (127.0.0.1 — это собственный IP-адрес компьютера), либо по имени (localhost — это универсальное собственное имя компьютера). Для TCP-порта требуется указать такое же значение, которое задано для TCP-порта сервера.
3.Для передачи текста на сервер требуется активировать соединение:
ClientSocket1->Active= true;
Этот код активирует Socket. Так как у него установлены свойства Address, Host и Port, то произойдет соединение с соответствующим сервером.
4. Передать текст можно, например, так:
ClientSocket1->Socket->SendText(«текст»);
Клиентское приложение написано.
Можно запустить сервер и активировать его. После этого запустить клиента и активировать его, в серверном приложении признак присоединения должен поменяется. Дать команду на передачу текста. Проследить, что данные получены сервером.
Ниже приводится список компонентов с кратким описанием, наравне с сокетами используемых в написании разнообразных сетевых приложений.
Компоненты из набора FastNet
Компонент TNMDayTime (вкладка FastNet) предназначен для получения от серверов даты и времени в Интернет и интранет в соответствии со стандартом RFC 867. Используется свойство DayTimeStr, в котором содер-
жатся значения даты и времени, полученные с сервера. В свойстве Host нужно задать ссылку на соответствующий сервер даты и времени в Интернет.
Компонент TNMMsg (вкладка FastNet) предназначен для обмена простыми текстовыми сообщениями в кодах ASCII по Интернет и интранет с использованием
протокола TCP/IP. При этом на хост-компьютере, на который по-
106
сылается сообщение, должен быть запущен сервер, использующий компонент TNMGeneralServer. В свойстве Host задается имя удаленного компьютера или его IP, в свойстве Port указывается TCP-порт, который слушает сервер. Так же нужно задать свойство FromName, а после этого можно вызывать метод PostIt().
Компонент TNMMsgServ (вкладка FastNet) используется для получения простых текстовых сообщений
вкодах ASCII, распространяемых по Интернет и интранет с использованием протокола TCP/IP. При этом на посылающий сообщение компьютер должен использоват компонент TNMMsg. В свойстве Port указывается TCP-порт, который слушает сервер. Для обработки полученных сообщений используется обработчик события OnMSG.
Компонент TNMEcho (вкладка FastNet) предназначен для отсылки текстовых сообщений на эхо-сервер и получения этого сообщения обратно в соответствии со
стандартом RFC 862. Этот компонент применяется для тестирования и настройки ЛВС, т.к. позволяет оценить время ответа сервера, сохраняемое в свойстве ElapsedTime.
Компонент TNMFTP (вкладка FastNet) применяется для обмена файлами между FTP-сервером и клиентской машиной по протоколу FTP. Для подключения к
FTP-серверу необходимо задать свойства Host и Port, а так же в свойствах UserId и Password необходимые имя пользователя и пароль. Метод Connect() применяется для установления связи с сервером. Имеет большое число собственных свойств и методов, если метод компонента завершается успешно, то генерируется событие OnSuccess, иначе — происходит событие OnFailure. В обоих случаях через параметр Trans_Type обработчиков этих событий передается имя команды типа TCmdType. Компонент позволяет на удаленном компьютере: определять содержимое каталога, изменять текущий каталог, считывать файлы, записывать файлы, удалять файлы или каталоги.
Компонент TNMHTTP (вкладка FastNet) используется для передачи через Интернет или интранет гипертекста по протоколу HTTP (версии HTTP 1.1). Для подключения к серверу необходимо задать свойства Host и Port. Использует методы Get() (для получения гипертекстовых докумен-
107
тов), Head() (для считывания заголовка), Options() (для получения справочной информации), Trace (для отладки), Put (для создания документа на сервере), Post() (для редактирования гипертекста на сервере) и Delete() (для удаления документа). Имеет ряд свойств, позволяющих работать с HTML-документами. Если метод компонента завершается успешно, то генерируется событие OnSuccess, иначе — происходит событие OnFailure.
Компонент TNMNNTP (вкладка FastNet) предназначен для чтения и публикации сообщений на NEWSсерверах в Интернет в соответствии с протоколом NNTP (RFC 977). Для подключения к серверу новостей необходимо за-
дать его имя (или IP-адрес) в свойстве Host и вызвать метод Connect(). Компонент выполняет следующие основные задачи: получение списка групп новостей — метод GetGroupList(), выбор активной группы новостей SetGroup(), чтение статей — метод GetArticle(), и свойства Header и Body и отправка статей в выбранную группу — свойства PostHeader, PostBody и метод
PostArticle().
Компонент TNMPOP3 (вкладка FastNet) используется для получения электронных писем (e-mail) от почтового сервера POP3. Для подключения к серверу необходимо задать свойства Host и Port, а так же в свойствах UserId и Password прописать необходимые имя пользователя и пароль, затем вызвать метод Connect() для установления связи с сервером. Для получения почты необходимо использовать метод GetMailMessage(), полученное сообщение попадает в свойство MailMessage. При успешном или ошибочном завершении методов, генерируются события OnSuccess или OnFailure соответст-
венно.
Компонент TNMSMTP (вкладка FastNet) позволяет отправить почту через почтовый сервер Интернет по протоколу SMTP (RFC 821). Необходимо задать свой-
ства Host и Port, а затем вызвать метод Connect(). Для разрыва соединения используется метод Disconnect(). Для отправления почты необходимо заполнить свойство PostMessage необходимыми элементами электронного письма и вызвать метод SendMail(). Метод Verify() применяется для проверки существо-
108
вания данного имени на сервере, а метод ExpandList() возвращает список рассылки сервера.
Компонент TNMUDP (вкладка FastNet) применяется для отправки пакетов по сети Интернет или интранет с использованием протокола UDP (RFC 768). Имя уда-
ленного компьютера и порт задаются в свойствах RemoteHost и RemotePort. Для получения данных по протоколу UDP нужно задать значение свойству LocalPort. Передача может вестись двумя способами: Передача двоичного потока — SendStream() и передача массива символов (буфер) — SendBuffer(). При корректном поступлении данных происходит событие OnDataAvailable, в обработчике этого события можно считывать данные в буфер —
ReadBuffer() или в поток — ReadStream().
109
ЛАБОРАТОРНАЯ РАБОТА № 11 Основы socket-программирования под Windows
Продолжительность — 4 часа. Максимальный рейтинг — 8 баллов.
ЦЕЛЬ РАБОТЫ
Целью данной лабораторной работы является получение основ программирования Windows-приложений непосредственно для локальной вычислительной сети. В ходе выполнения студенты получат навыки в осуществлении связи компьютеров через ЛВС, передачи информации и удаленным управлением компьютера с помощью средств С++Builder (Delphi).
ЗАДАНИЕ
1.Повторить понятия: протокол, интерфейс, пакет, кадр, адрес, IP-адрес. Ознакомиться с сетевыми службами Windows: DNS, MSClient, Wins, DHCP. Вспомнить навыки работы с сете-
выми утилитами: ipconfig, ping, netstat.
2.Изучить вопросы программирования в среде визуальной разработки C++Builder или Delphi (Borland). Освоить методы программирования Windows-приложений. Изучить литературу и Интернет-ресурсы по socket-программированию.
4.Изучить протоколы стека TCP\IP: IP, TCP, UDP, ICMP, IGMP, ARP, RARP, RIP, DHCP, Telnet, FTP, TFTP, SNMP, SMTP, POP3, HTTP и т.п.
5.Написать программы, соответствующие своему индивидуальному заданию (варианты индивидуальных заданий определяет преподаватель). Отладить, протестировать их.
6.Снабдить программы необходимыми комментариями, спроектировать удобный визуальный интерфейс.
7.В отчете привести полные блок-схемы алгоритмов клиентской и серверной программ, листинг программы, снабженные комментариями и результаты работы программ (листинги, скриншоты, файлы с данными и т.п.).