Эта библиотека входит в состав пакета Visual Basic который можно установить вместе с пакетом программ MS Office. Ну или найти в Интернете.
Её полноценное использование в среде 1С:Предприятие возможно только в качестве ActiveX элемента на форме.
На форме появится значок с двумя компьютерами, примерно такой (все зависит от используемой вами операционной системы и версии библиотеки).
Не забудьте для компоненты снять флажок видимости. Компонент не имеет элементов интерфейса, тем не менее 1С пытается его отрисовать, что приводит к некрасивым результатам.
После добавления компонента на форму становятся доступными все связанные с ним свойства и события. Наиболее часто используемые события добавляются на форму свойств.
Остальные свойства и события доступны через контекстную подсказку "IntelliSense" в модуле формы.
Свойства.
Из дополнительных свойств стоит отдельно выделить свойство "State" в это свойство содержит числовое значение текущего состояния компоненты - Статус.
Список возможных значений
Состояние | Числовое значение | Описание |
sckClosed | 0 | Default. Closed Значение по умолчанию. Подключение закрыто. |
sckOpen | 1 | Open Подключение активно. Соединение установлено. |
sckListening | 2 | Listening Режим "прослушки". Компонента ждет подключение по указанному порту. |
sckConnectionPending | 3 | Connection pending Ожидание подключения |
sckResolvingHost | 4 | Resolving host Получение адреса компьютера (хоста) по имени. |
sckHostResolved | 5 | Host resolved Адрес компьютера получен. |
sckConnecting | 6 | Connecting Подключение |
sckConnected | 7 | Connected Подключен |
sckClosing | 8 | Peer is closing the connection Клиент закрыл подключение |
sckError | 9 | Error Ошибка |
Свойство Protocol содержит числовой параметр, указывающий, с каким протоколом работать. Protocol принимает одно из двух возможных значений
- 0 - протокол TCP/IP
- 1 - Протокол UDP
Свойство LocalPort числовой параметр, указывающий, какой порт будем прослушивать функцией Listen().
Свойства RemotePort и RemoteHost - это параметры, указывающие по какому адресу (IP или DNS) и на какой порт совершать подключение к серверу функцией Connect().
Для каждого параметра есть одноименная функция, которая возвращает текущее значение параметра или устанавливает новое значение. За исключением параметра State, для разработчика этот параметр ReadOnly.
Доступные события.
Error - Событие возникает при возникновении какой-либо ошибки.
Сообщить(Description);
КонецПроцедуры
В параметрах события возвращается
- Number - цифровой код возникшей ошибки,
- Description - текстовое описание ошибки,
- Scode - код ошибки в типе Long (HRESULT) SCODE
- Source - описание источника ошибки,
- HelpFile - ссылка на Файл справки
- HelpContext - контекст файла справки
- CancelDisplay - флаг отмены отображения стандартного окна об ошибке. По умолчанию значение - Истина. Окно не выводится.
DataArrival - возникает при поступлении данных.
ТкстСообщения = "";
WinSocket1.GetData(ТкстСообщения);
Сообщить("Получен ответ" + Символы.ПС + ТкстСообщения);
КонецПроцедуры
В параметр bytesTotal передается числовое значение, сколько байт было принято. Сами данные можно получить функцией GetData(). В параметр этой функции нужно передать строковую переменную, в которую функция вернет полученные данные.
Connect - событие возникает при успешном подключении к серверу. Возникает только на стороне клиента.
Сообщить("Покдлючение к " + Элемент.RemoteHost + " успешно.");
КонецПроцедуры
Это событие не имеет собственных параметров.можно работать только с параметрами самой компоненты.
ConnectionRequest - серверное событие, возникает при поступлении запроса на подключение.
Сообщить("Запрос подключения");
Сост = "Подключение";
Если НЕ WinSocket.State = 0 Тогда
WinSocket.Close()
КонецЕсли;
WinSocket.Accept(requestID);
Сообщить("Приконнектился "+WinSocket.RemoteHostIP);
КонецПроцедуры
В параметр requestID поступает идентификатор подключаемого клиента. При этом, обратите внимание, что перед разрешением на подключение функцией Accept(requestID) необходимо компоненту перевести в состояние "0", т.е. закрыть открытый прослушиваемый поток.
Тут же можем получить IP-адрес подключаемого клиента из параметра RemoteHostIP.
Теперь, после установления соединения, можем передавать данные в обе стороны.
Close - Событие, возникающее при вызове метода Close() т.е. при закрытии компоненты.
SendProgress - Событие, возникающее при передаче данных, возникает при каждом переданном байте - так что не стоит навешивать слижком громоздкую или ресурсоемкую логику. Да и как показала практика, в 1С это событие использовать нет смысла, потому как процедура, связанная с этим событием, срабатывает только 1 раз, когда форма получает обратно фокус ввода.
Следующая процедура выводит прогресс отправки в окно служебных сообщений. По сути должна выводить сообщение для каждого отправленного байта. Но следующая картанка показывает что это не так.
Сообщить("Байт отправленно - " + bytesSent + "/ байт осталось - " + bytesRemaining);
КонецПроцедуры
Из картинки видно, что вызов процедуры произошел только один раз.
SendComplete - Событие, возникающее при завершении отправки данных. Следующий код демонстрирует функционирование данного события.
Сообщить("-----------------------------------");
Сообщить("" + + ТекущаяДата() + " |Отправка данных завершена! ");
Сообщить("-----------------------------------");
КонецПроцедуры
Ну и сам результат вызова.
Оригинал статьи на nastroy-ka.ru