| Winsock |
| Автор (С) Андрей Колесов, Ольга Павлова | |||||||||||||||||||||||||||||||||||||||||||||||||
| 30.07.2001 г. | |||||||||||||||||||||||||||||||||||||||||||||||||
Элемент управления Winsock, невидимый для пользователя, обеспечивает доступ к сетевым протоколам TCP (Transfer Control Protocol) и UDP (User Datagram Protocol). Его можно помещать на пользовательские формы Microsoft Excel, Word и PowerPoint и встроенные формы Microsoft Access, а также использовать в Visual Basic, Visual C++ и Visual FoxPro. С Winsock перестает быть проблемой установление связи и организация двунаправленного обмена данными с удаленной машиной; он позволяет создавать приложения типа "клиент--сервер", не вникая в детали устройства TCP и низкоуровневых функций API, обеспечивающих работу с сетевыми протоколами.
Элемент управления Winsock, невидимый для пользователя, обеспечивает доступ к сетевым протоколам TCP (Transfer Control Protocol) и UDP (User Datagram Protocol). Его можно помещать на пользовательские формы Microsoft Excel, Word и PowerPoint и встроенные формы Microsoft Access, а также использовать в Visual Basic, Visual C++ и Visual FoxPro. С Winsock перестает быть проблемой установление связи и организация двунаправленного обмена данными с удаленной машиной; он позволяет создавать приложения типа "клиент--сервер", не вникая в детали устройства TCP и низкоуровневых функций API, обеспечивающих работу с сетевыми протоколами. Некоторые варианты использования
Выбор протоколаПриступая к работе с Winsock, в первую очередь необходимо сначала решить, какой протокол будет использоваться - TCP или UDP. Основное отличие между ними заключается в том, что TCP - это протокол на базе связи, т. е. он требует сначала установить связь и лишь после этого переходить к обмену данными, а UDP представляет собой протокол без связи и позволяет отправить сообщение с одного компьютера на другой, не выполняя предварительно никаких специальных действий. Кроме того, при использовании UDP максимальный объем данных, передаваемых за один раз, определяется самой сетью. Обычно тип протокола однозначно определяется характером создаваемой программы. Вот несколько критериев, на основе которых можно сделать выбор.
Основные сведения о TCPПротокол TCP позволяет установить и поддерживать связь с удаленным компьютером, а когда связь установлена, организовать обмен данными. Программа, работающая по протоколу TCP, действует по-разному в зависимости от того, чем она является - клиентом или сервером. Клиент выдает запрос на связь, а сервер принимает его и завершает установление связи. После этого они могут свободно обмениваться данными в обе стороны. Для программы-клиента необходимо определить имя или IP-адрес сервера (свойство RemoteHost), а также порт, на котором сервер будет ее "слушать" (свойство RemotePort). После того как они заданы, можно послать серверу запрос на установление связи, вызвав метод Connect. Для программы-сервера следует определить порт, на котором она будет "слушать" клиентов (свойство LocalPort), после чего вызвать метод Listen. При получении запроса на установление связи от клиентской машины произойдет событие ConnectionRequest. Чтобы завершить процедуру установления связи, необходимо обработать это событие, вызвав метод Accept. Когда связь установлена, можно отправлять данные, используя метод SendData. При получении данных происходит событие DataArrival. Его обработка должна состоять в вызове метода GetData. Основные сведения об UDPПротокол UDP не предусматривает отдельной процедуры установления связи и позволяет использовать и одну и ту же программу в качестве как клиента, так и сервера. Для работы по протоколу UDP необходимо задать для клиента свойство LocalPort, а для сервера - свойства RemoteHost (Internet-адрес клиентской машины) и RemotePort (тот же номер порта, который задан в качестве LocalPort компьютера-клиента). Отправка и получение данных происходят так же, как при использовании протокола TCP: для отправки применяется метод SendData, при получении сообщения возникает событие DataArrival, обработка которого должна состоять в вызове метода GetData. Задание протоколаПротокол, который будет использовать программа, определяется свойством Protocol. Значение sckTCPProtocol соответствует протоколу TCP, а значение sckUDPProtocol - протоколу UDP. Нужное значение можно задать как в окне свойств Winsock, так и вручную, с помощью оператора Winsock1.Protocol = sckTCPProtocol Определение имени компьютераЧтобы связаться с удаленным компьютером, нужно указать его IP-адрес или имя. Поскольку IP-адрес труден для запоминания (это четыре трехзначных числа, разделенных точками), чаще пользуются именем компьютера. Его вы найдете в поле Computer name ("Имя компьютера") на странице Identification ("Компьютер") окна свойств сети. Чтобы открыть это окно, нужно выбрать значок Network ("Сеть") на Панели управления или пункт Properties ("Свойства") контекстного меню, которое появляется при щелчке правой кнопкой мыши по значку Network Environment ("Сетевое окружение") на Рабочем столе Windows. Пример использования WinsockНиже мы продемонстрируем использование Winsock при создании TCP-клиента и TCP-сервера, построив два отдельных приложения, которые будут запускаться на разных машинах. Чтобы пример работал, на обеих машинах должен присутствовать Winsock. Там, где его нет, следует предварительно установить в VB связь с файлом Mswinsck.ocx. После этого как для клиента, так и для сервера необходимо добавить к пользовательской форме элемент Microsoft WinSock Control, version 5.0, но дальнейшие действия для клиента и сервера различны. Настройка TCP-сервера
Настройка TCP-клиента
Запуск примера Скопируйте либо клиентскую, либо серверную часть программы на другой компьютер, после чего запустите клиентскую часть на одном компьютере, а серверную - на другом. Нажмите кнопку "Связь" на клиентской форме. Теперь при вводе какого-либо текста в поле txtSendData на любой из форм он должен появиться в поле txtOutput на другой форме.
Просмотров: 13610
|
|||||||||||||||||||||||||||||||||||||||||||||||||