Краткое руководство по использованию элемента Winsock.
Winsock - элемент управления, который обеспечивает простой доступ к TCP или UDP сетевым операциям. Он может использоваться Microsoft Access, Visual Basic, Visual C++ или Visual FoxPro разработчиками. Чтобы создать клиент или сервер приложение, Вам не нужно вникать в детали TCP или вызывать Winsock API функции. Устанавливая свойства и вызывая функции элемента управления, Вы можете легко подсоединиться к отдалённому компьютеру и обмениваться данными в обоих направлениях.
Основы TCP
Протокол Управления Передачи (TCP) позволяет Вам создавать и работать с соединением к отдалённому компьютеру. Используя соединение, оба компьютера могут обмениваться данными между собой. Если Вы создаёте клиент приложение, то Вы должны указать имя или IP адрес (RemoteHost) сервера, а также порт (RemotePort), который будет "прослушиваться". Затем вызовите функцию Connect. Если Вы создаёте сервер приложение, установите порт (LocalPort) который будет "прослушиваться", и вызовите функцию Listen. Когда компьютер клиент запросит соединение, произойдёт событие ConnectionRequest. Чтобы завершить соединение, вызовите функцию Accept во время этого события. Как только соединение будет установлено, оба компьютера могут обмениваться данными. Чтобы послать данные, используйте фунцию SendData. Когда к вам придут данные, произойдет событие DataArrival. Вызовите функцию GetData в событии DataArrival, чтобы получить данные.
Основы UDP
Протокол Пользовательских Датаграмм (UDP) не требует соединения. В отличие от TCP операций, компьютеры не устанавливают соединение. Также UDP приложение может быть и клиентом и сервером. Чтобы передавать данные, прежде всего, установите свойство LocalPort компьютера клиента. Далее серверу требуется только установить адрес компьютера клиента (RemoteHost) и свойство RemotePort равным свойству LocalPort компьютера клиента. Затем вызвать функцию SendData для начала передачи данных. Компьютер - клиент будет использовать функцию GetData во время события DataArrival для получения посланного сообщения.
Свойства Winsock
ByteRecived - возвращает количество полученных данных, находящихся в данный момент в принимающем буфере. LocalHostName - возвращает имя местного компьютера. LocalIP - возвращает IP адрес местного компьютера в формате (xxx.xxx.xxx.xxx) LocalPort - возвращает или устанавливает местный порт для использования. Для клиента порт используется для отправки данных. Укажите порт 0, если приложение не требует специфического порта. В этом случае элемент управления выберет случайный порт. После установления соединения, этот местный порт используется для TCP соединений. Для сервера этот порт является принимающим. Если указан порт 0, будет использоваться случайный порт. После вызова функции Listen, свойство содержит порт, который был выбран. Protocol - возвращает или устанавливает протокол, используемый Winsock (либо TCP, либо UDP). RemoteHost - возвращает или устанавливает отдалённый компьютер, с которым нужно обмениваться данными. Вы можете указать IP адрес, имя компьютера или FTP адрес. RemoteHostIP - возвращает IP адрес отдалённого компьютера. RemotePort - возвращает или устанавливает порт отдалённого компьютера для соединения. (Порты, устанавливаемые по умолчанию: 80 - HTTP, 26 - FTP) State - возвращает состояние элемента управления в числовом выражении.
Функции Winsock
Accept - только для TCP сервер - приложений. Создаёт соединение в событии ConnectionRequest. Bind - указывает, что LocalPort и LocalIP будут использоваться для TCP соединения. Вы должны запустить функцию Bind до вызова функции Listen. Close - закрывает TCP соединение или порты для обоих клиент и сервер - приложений. Listen - только для TCP соединения. Переход в режим прослушивания порта. SendData/GetData - посылает/получает данные. PeekData - функция получает данные, но не удаляет их из принимающего буфера (только для TCP соединения).
События Winsock
Close - происходит, когда отдалённый компьютер закрывает соединение. Приложение должно использовать функцию Close, чтобы правильно закрыть TCP соединение. ConnectionRequest - происходит, когда отдалённый компьютер посылает запрос на создание соединения. Событие только для TCP сервер - приложения. RemoteHostIP и RemotePort свойства хранят информацию о клиенте после активирования события. Connect - происходит, когда соединение с отдалённым компьютером установлено. DataArrival - происходит при получении данных. Error - активируется при возникновении ошибки, например: при провале попытки установления соединения. SendComplete - происходит, когда передача данных закончена. SendProgress - происходит, пока идёт процесс передачи данных. Аргументы bytesSend и bytesRemaining возвращают сколько байт было передано, и сколько ещё находится в буфере перадачи.