Главная | Обратная связь | Поможем написать вашу работу!
МегаЛекции

Private Sub sckServer_ConnectionRequest(ByVal requestID As Long)




Лабораторная работа №3.

Использование управляющего элемента Winsock языка Visual Basic для передачи сообщений между узлами ЛВС.

Содержание лабораторной работы №3.

1. Задание.

2. Краткие теоретические сведения.

3. Вопросы к лабораторной работе №3.

4. Требования к оформлению отчета.

I. Задание.

Осуществить передачу текстовых сообщений в реальном масштабе времени между двумя машинами. Предусмотреть передачу информации как в одном, так и другом направлении. Для передачи сообщений использовать протокол TCP и UDP.

Рекомендации к выполнению задания (протокол TCP)

Объект–клиент создается из формы (frmClient). Он вначале устанавливает соединение с объектом-сервером с помощью кнопки(cmdConnect)-"Установка соединения" и далее передает сообщение через текстовый буфер(txtSendData).

Прием сообщения от объекта-сервера осуществляется в другой текстовый буфер(txtReceive).

Для организации передачи информации объекту–серверу необходим управляющий элемент Winsock(sckClient).

 

 

Объект-сервер создается из формы (frmServer). Он отвечает согласием на установку соединения с объектом –клиентом и принимает от него сообщения.

В свою очередь, он может и сам передавать сообщения объекту-клиенту.

Для осуществления связи с объектом-клиентом необходим свой Winsock(sckServer).

Примечание. Аналогичные формы должны быть и для протокола UDP. Однако на форме UDP Client не должно быть кнопки "Установка соединения"

II. Краткие теоретические сведения.

1. Элемент управления Winsock.

Winsock, как элемент управления Visual Basic, невидим для пользователя (также, как и управляющий элемент Timer). Winsock обеспечивает доступ к протоколам TCP и UDP. Он может быть использован разработчиками Microsoft Access, Visual Basic, Visual C++ или Visual FoxPro. При использовании Winsock не обязательно знать функции Winsock API низкого уровня.

Winsock не является стандартным элементом управления и потому его нет в окне Toolbox. Для установки его в окно Toolbox необходимо из основного меню Visual Basic выбрать опцию Project/Components.…В диалоговом окне Components (вкладка Controls) выбрать элемент списка - Microsoft Winsock Control 5.0.

 

2. Определение сокета (гнезда).

Сокет - двунаправленный логический вход-выход, через который два приложения или процесса могут обмениваться данными. Сокеты обеспечивают механизм сетевой межмашинной связи, используя протокол TCP и UDP. Серверы и клиенты сокета реализуются с использованием элемента управления Winsock.

Сокет идентифицируется сетевым именем компьютера или адресом IP. Он связан с портом, через который передаются данные или с которого принимаются данные. Тип сокета определяет, с каким протоколом будет работать управляющий элемент Winsock: TCP (передача с соединением) или UDP (передача без соединения).

 

3. Алгоритм работы с ТСР.

По протоколу TCP перед передачей данных нужно создать соединение.

Приложение-клиент запрашивает соединение, приложение-сервер создает или не создает соединение. После установки соединения оба приложения могут передавать данные друг другу. Все это производится с помощью свойств и методов управляющего элемента Winsock, а также событий, на которые он может реагировать. Заметим, что управляющий элемент Winsock необходим как в приложении-клиенте, так и в приложении-сервере.

Установка соединения происходит следующим образом.

В приложении-клиенте устанавливается свойство RemoteHost, которое определяет имя или IP-адрес компьютера- сервера, и свойство RemotePort, где определяется номер порта компьютера- сервера, через который сервер "слушает" сеть. Т.е. приложение-клиент должен знать, с кем оно связывается и какой порт сервера "слушает". Затем вызывается метод Connect (запрос на установку соединения).

В приложении-сервере устанавливается свойство LocalPort - порт прослушивания (номер порта компьютера- сервера) и вызывается метод Listen. Когда придет запрос на соединение от клиента, то происходит событие ConnectionRequest. Для установления соединения внутри процедуры обработки события ConnectionRequest должен быть вызван метод Accept.

После установления соединения любой из компьютеров может передавать и получать данные. Чтобы передать данные, вызывается метод SendData.

 
 

Всякий раз, при получении данных происходит событие DataArrival. Для принятия данных следует, внутри процедуры обработки события DataArrival, использовать метод GetData.

 

4. Программирование сервера.

а). Установка свойства Protocol (элемента Winsock для сервера).

Свойство Protocol может быть установлено в режиме Design, либо Run. По умолчанию этому свойству присваивается протокол TCP.

б). Установка свойства LocalPort и вызов метода Listen (элемента Winsock для сервера).

Используя свойство LocalPort, специфицируется порт, через который сервер будет взаимодействовать с клиентом. С помощью метода Listen сервер "прослушивает" входящие запросы на установку соединение от клиента.

Private Form_Load()

sckServer.LocalPort=1001

SckServer.Listen

End Sub

в). Используя событие ConnectionRequest, запрограммировать действие по принятию или отклонению запроса соединения.

Private Sub sckServer_ConnectionRequest(ByVal requestID As Long)

' Если управляющий элемент sckServer не закрыт, то его

' необходимо перевести в закрытое состояние.

If sckServer.State <> sckClosed Then sckServer.Close

sckServer.Accept requestID ' Метод Accept необходимо использовать с 'параметром requestID, идентификатором поступающего запроса на соединение.

End Sub

5. Программирование клиента.

а). Установка свойства Protocol (элемента Winsock для клиента).

Свойство Protocol может быть установлено в режиме Design, либо Run. По умолчанию этому свойству присваивается протокол TCP.

б). Используя свойство RemoteHost, специфицируется имя удаленной машины (сервера); используя свойство RemotePort, специфицируется порт удаленной машины (сервера), через который клиент будет общаться с удаленной машиной.

 

Private Sub Form_Load ()

sckClient.RemoteHost = “Q4” ' Здесь UT2-имя удаленной машины

sckClient.RemotePort = 1001 ' Значение свойства RemotePort должно совпадать 'со значением свойства LocolPort сервера.

End Sub

в) Используя метод Connect, инициируется начало соединения между клиентом и удаленной машиной (сервером).

 

Поделиться:





Воспользуйтесь поиском по сайту:



©2015 - 2024 megalektsii.ru Все авторские права принадлежат авторам лекционных материалов. Обратная связь с нами...