ЛАБОРАТОРНАЯ РАБОТА №2
ОБМЕН ТЕКСТОВОЙ ИНФОРМАЦИЕЙ МЕЖДУ КОМПЬЮТЕРАМИ В ЛОКАЛЬНОЙ СЕТИ
1 ЦЕЛЬ РАБОТЫ
1.1Изучить средства реализации обмена
текстовыми сообщениями между компьютерами, исполь
зующими стек протоколов TCP/IP.
1.2Получить практические навыки использования компонентов NMMSGServ и NMMsg.
2 САМОСТОЯТЕЛЬНАЯ ПОДГОТОВКА
2.1 Подготовьте бланк отчета.
2.2Проработайте
методические указания, теоретический материал и материалы лекций и выполни
те задания, указанные в п. 4.
3 КРАТКИЕ ТЕОРЕТИЧЕСКИЕ СВЕДЕНИЯ
Протокол TCP/IP позволяет организовать обмен информацией между двумя компьютерами, которые могут находиться как в пределах локальной сети, так и быть удаленными друг от друга.
Компоненты, используемые в данной лабораторной работе, требуют указания адреса сервера. Название сервера задается в свойстве Host. В этом свойстве может указываться имя сервера (URL) или его IP-адрес. Если приложение отлаживается на локальном компьютере, то его IP-адрес 127.0.0.1. В качестве альтернативы свойству Hostможно задать значение "localhost".
При работе в локальной сети каждый компьютер также может быть одновременно и клиентом и сервером. Свойство Hostдолжно содержать имя или IP-адрес соответствующего компьютера. При работе в Internet значение свойства Hostзаписывается как полный URL (например, http://www.newserver.com), соответственно, в этом случае сервером может быть только компьютер, имеющий URL.
Кроме того, ряд компонентов имеют свойство Port, задающее программный порт компьютера (идентификатор процесса), к которому подключаются программы, чтобы передавать и принимать информацию. Порт характеризуется своим номером. Многие номера закреплены за определенными протоколами или службами Internet, так что при их использовании свойство Portзадается автоматически. В ряде случаев значение свойства Portможно задавать самостоятельно. При этом нужно следить, чтобы не задействовать один из уже занятых портов.
Для установления соединения многие компоненты используют метод Connect. Проверить, установлено ли соединение, можно по булеву свойству Connected: true- соединен, false- не соединен.
При установлении соединения для двух компьютеров задается свойство TimeOut, определяющее в миллисекундах время, в течение которого ожидается ответ. Если в течение заданного промежутка времени ответ не получен, то генерируется исключение и текущая операция прерывается. Если задать TimeOut= О, то время ожидания будет неограниченно. Однако, иногда это может привести к "зависанию" приложения.
В процессе соединения генерируется ряд событий. Если соединение осуществляется с указанием IP-адреса, то наступает событие OnHostResolved. Событие OnConnectнаступает в момент установления соединения. Событие OnDisconnectнаступает в момент разрыва соединения. Обработку событии, а также перехват возможных ошибок рекомендуется осуществлять с использованием структуры try... catch.
Свойство ReportLevelопределяет степень детализации процесса передачи сообщений. По умолчанию оно имеет нулевое значение и никак не влияет на процесс соединения. Если оно имеет одно из значений 1,2,4,8, или 16, то на некоторых промежуточных операциях установления соединения и передачи сообщений возникают события OnStatus. Заголовок обработчика такого события имеет вид:
void__ fastcallимя(TComponent *Sender, AnsiString Status)
Строка Statusсодержит информацию о текущем этапе соединения. Чем выше значение ReportLevel, тем больше событий происходит.
Обмен текстовыми сообщениями между двумя приложениями, работающими на разных компьютерах, подключенных к сети, можно организовать с помощью компонентов NMMSGSerg и NMMsg, расположенных на странице библиотеки FastNet. Сообщения передаются компонентом MMsg, который располагается на форме приложения-клиента. Он имеет свойства Portи Host, описанные выше. По-умолчанию свойство Portимеет значении 6711, его можно оставить без изменений.
Основной метод компонента - Postlt, обеспечивающий отправку сообщений. Он объявлен следующим образом:
AnsiString ___ fastcall Postlt(const AnsiString sMsg);
Параметр sMsgсодержит текст передаваемого сообщения. Метод возвращает строку «ОК», если адресат найден и сообщение передано.Если передача не удалась, то выполнение метода заканчивается генерацией исключения.
Исключение генерируется при любой неудачной передаче сообщения. Если неудача связана с ошибочным IP-адресом (значение свойства Hostначинается с цифры и сервер с данным адресом не найден), то перед генерацией исключения наступает событие OnConnectionFailed. Если был задан URL (значение Hostначинается с буквы и сервер с данным адресом не найден), то перед генерацией исключения наступает событие OnlnvalidHost.
Компонент NMMSGServобеспечивает получение сообщений на сервере, которым может быть любое приложение, содержащее данный компонент. Свойства этого компонента не отличаются от свойств NMMsg.
Основное свойство компонента - OnMSG, оно происходит при успешном получении сообщения. Заголовок обработчика этого события имеет вид:
void___ fastcallTForml::NMMSGServlMSG(TComponent *Sender,
const AnsiString sFrom, const AnsiString sMsg)
Параметр sFromсодержит строку с именем того клиента, от которого пришло сообщение, т.е. содержимое свойства FromNameкомпонента NMMsg. Параметр sMsgсодержит строку сообщения, т.е. стоку, переданную компонентом NMMsgс помощью метода Postlt.
В момент соединения с клиентом наступает событие OnClientContact. В момент разрыва соединения - OnDisconnect.
Последовательность событий, возникающих при выполнении клиентом метода Postlt:
Уважаемый посетитель!
Чтобы распечатать файл, скачайте его (в формате Word).
Ссылка на скачивание - внизу страницы.