Полезное:
Как сделать разговор полезным и приятным
Как сделать объемную звезду своими руками
Как сделать то, что делать не хочется?
Как сделать погремушку
Как сделать так чтобы женщины сами знакомились с вами
Как сделать идею коммерческой
Как сделать хорошую растяжку ног?
Как сделать наш разум здоровым?
Как сделать, чтобы люди обманывали меньше
Вопрос 4. Как сделать так, чтобы вас уважали и ценили?
Как сделать лучше себе и другим людям
Как сделать свидание интересным?
Категории:
АрхитектураАстрономияБиологияГеографияГеологияИнформатикаИскусствоИсторияКулинарияКультураМаркетингМатематикаМедицинаМенеджментОхрана трудаПравоПроизводствоПсихологияРелигияСоциологияСпортТехникаФизикаФилософияХимияЭкологияЭкономикаЭлектроника
|
Использование протокола TCPСоздадим два очень простых приложения для демонстрации программ сервера и клиента с применением протокола TCP. На рис. 13.1 приведена форма приложения-сервера в режиме разработки, а далее — таблица с элементами управления формы. Рис. 13.1 Форма приложения-сервера в режиме разработки
В листинге 13.1 представлен код модуля формы приложения-сервера, который демонстрирует основные правила работы подобного приложения. В строках 4–12 описан код программы загрузки формы; здесь свойству Winsock -элемента LocalPort присваивается номер порта для «прослушивания» (строка 7) и выполняется (строка 10) метод Listen (этого же элемента управления). Листинг 13.1 Код модуля формы приложения-сервера Option Explicit
Private Sub Form_Load() ' установить порт для обмена данными: tcpServer.Bind 1001 ' "прослушивать" порт: tcpServer.Listen End Sub
Private Sub tcpServer_ConnectionRequest(ByVal requestID As Long) ' обработка запроса на установление связи If tcpServer.State <> sckClosed Then tcpServer.Close ' завершить процедуру установления связи: tcpServer.Accept requestID Beep tcpServer.SendData "Есть связь!" Label1.Caption = "Есть связь!" End Sub
Private Sub CmdSend_Click() ' отправить данные клиенту tcpServer.SendData txtOutPut.Text End Sub
Private Sub tcpServer_DataArrival(ByVal bytesTotal As Long) Dim strData As String ' принять данные от клиента: tcpServer.GetData strData ' отобразить принятые данные в текстовом окне: txtInPut.Text = strData End Sub Private Sub CmdExit_Click() ' закрыть приложение: Unload Me End Sub Процедура tcpServer_ConnectionRequest (строки 15–27) обрабатывает запрос на установление связи. Здесь используется метод Accept (строка 21) элемента Winsock. Далее выполняется звуковой сигнал, передача строки " Есть связь! " приложению-клиенту и на панель приложения-сервера при помощи метки. Таким образом, и клиент, и сервер будут знать о начале сеанса связи. Процедура CmdSend_Click (строки 30–35), состоящая всего из одного оператора, при помощи метода SendData передает данные из текстового окна txtOutPut клиенту. Процедура tcpServer_DataArrival (строки 38–48) при помощи метода GetData принимает данные от клиента и помещает их в текстовое окно txtInPut. На рис. 13.2 приведена форма приложения-клиента в режиме разработки, а далее — таблица с элементами управления формы. Рис. 13.2 Форма приложения-клиента в режиме разработки
В листинге 13.2 представлен код модуля формы приложения-клиента, который демонстрирует основные правила работы подобного приложения. В строках 4–12 описан код программы загрузки формы; здесь свойству LocalPort объекта tcpClient типа Winsock присваивается имя удаленного компьютера (строка 7) и задается (строка 10) номер порта для обмена данными — используется свойство RemotePort (этого же элемента управления). Листинг 13.2 Код модуля формы приложения-клиента Option Explicit Private Sub Form_Load() ' задать имя компьютера-сервера: tcpClient.RemoteHost = "169.254.230.100" ' задать порт для обмена данными: tcpClient.RemotePort = 1001 End Sub
Private Sub CmdConnect_Click() ' запрос на соединение с сервером If Not tcpClient.State = sckOpen Then tcpClient.Connect End Sub
Private Sub CmdSend_Click() ' отправить данные на сервер tcpClient.SendData txtOutPut.Text End Sub
Private Sub tcpClient_DataArrival(ByVal bytesTotal As Long) Dim strData As String ' принять данные от сервера: tcpClient.GetData strData ' отобразить принятые данные в текстовом окне: txtInPut.Text = strData End Sub
Private Sub tcpClient_Error(ByVal Number As Integer, _ Description As String, ByVal Scode As Long, _ ByVal Source As String, ByVal HelpFile As String, _ ByVal HelpContext As Long, CancelDisplay As Boolean) ' обработка ошибок MsgBox Description End Sub
Private Sub CmdExit_Click() ' закрыть приложение Unload Me End Sub Процедура CmdConnect_Click (строки 15–20) выполняет запрос на установление связи. Здесь используется метод Connect объекта tcpClient типа Winsock. Если сервер не ответит, на этом работа приложения-клиента может завершаться — посредством процедуры обработки события кнопки CmdExit. Если сервер ответит, то выполнится процедура tcpClient_DataArrival (строки 29–39), которая примет от сервера строку " Есть связь! " и отобразит ее в текстовом окне txtInPut (строка 37), как обычные данные. В строках 22–27 записана процедура передачи данных на сервер, которая ничем не отличается от аналогичной прцедуры приложения-сервера. Определенную пользу может принести процедура обработки ошибок (строки 42–50), которая просто отображает посредством MsgBox параметр Description. На рис.13.3 представлены диалоговые окна приложений-собеседников, которые «общаются» по протоколу TCP. В данном случае оба приложения выполняются на одном компьютере, все остальное у них «настоящее». Рис. 13.3 Сеанс TCP-связи приложений-собеседников Для того чтобы используемые в листингах 13.1 и 13.2 свойства и методы объекта типа Winsock стали более понятными, в следующей таблице прведены наиболее значимые из них. Таблица 13.1 Некоторые свойства и методы и события объекта типа Winsock
|