Внешняя компонента TcpClient

Публикация № 1244318

Разработка - Разработка внешних компонент

Socket TCP IPv6 SSL

Асинхронный обмен данными по протоколу TCP. Поддержка IPv4/IPv6, SSL

Мы предлагаем компоненту TcpClient, которая позволяет подключиться к TCP-серверу.

Общие требования

  1. Компонента выполнена по технологии Native API, предназначена для 1С от версии 8.3.10.2168 и выше для ОС Windows x32 и x64.
  2. Для использования защищенного соединения используется библиотека OpenSSL, которая не входит в состав компоненты, а подключается динамически. Это дает возможность использовать самые свежие протоколы шифрования, обновив установленную версию OpenSSL. Путь в библиотеке OpenSSL указывается в свойствах компоненты.

Особенности работы объекта компоненты

  1. Объект работает в асинхронном режиме. То есть после вызова любого метода объект сразу возвращает управление основному потоку 1С. Далее объект продолжает выполнение метода в фоновом потоке. Таким образом, объект не зависит от длительных операций основного потока (таких, как формирование отчетов и т.п.).
  2. Для сигнализации о возникшем событии используется ВнешнееСобытие. 
  3. В 1С может быть одновременно создано несколько объектов TcpClient. Чтобы понять, какому объекту адресовано событие, используется идентификатор <ObjectID>, который передается первым параметром во ВнешнемСобытии.
 
Описание компоненты 
 
 Использование защищенного соединения
 
 Ограничение демо-версии

 

Другие наши продукты:

Модуль ККТ: онлайн-касса
по сети
  Внешняя компонента
WebSocketClient
         
Набор эмуляторов
торгового оборудования
  Внешняя компонента
CentrifugoClient
         
Внешняя компонента
SocketIOClient
  Внешняя компонента
HttpClient

 

 

Гарантия возврата денег

ООО "Инфостарт" гарантирует Вам 100% возврат оплаты, если программа не соответствует заявленному функционалу из описания. Деньги можно вернуть в полном объеме, если вы заявите об этом в течение 14-ти дней со дня поступления денег на наш счет.

Программа настолько проверена в работе, что мы с полной уверенностью можем дать такую гарантию. Мы хотим, чтобы все наши покупатели оставались довольны покупкой.

Для возврата оплаты просто свяжитесь с нами.

Скачать файлы

Наименование Файл Версия Размер
Внешняя компонента TcpClient: демо-версия

.zip 330,25Kb
18.06.20
11
.zip 1.0.1.6 330,25Kb 11
Обработка для тестирования

.epf 353,68Kb
18.06.20
2
.epf 1.0.1.6 353,68Kb 2

18.06.2020
1.0.1.6 0 2500 руб.

Моментальная
доставка


18.06.2020
0 1500 руб.

Специальные предложения

Комментарии
Избранное Подписка Сортировка: Древо развёрнутое
Свернуть все
1. Nastyok_Kur 08.06.20 08:08 Сейчас в теме
Добрый день! Очень полезная разработка!!!
Пытаюсь использовать демо-версию. Объект успешно создается, но никаких внешних событий не возникает.... Есть какие-то нюансы работы компоненты?

Создаю объект следующим образом:

Результат = ПодключитьВнешнююКомпоненту(АдресМакета, "TcpClient", ТипВнешнейКомпоненты.Native);
Комп = Новый("AddIn.TcpClient.TcpClient");
Комп.Open(l_RHost, Число(l_RPort));
2. Техподдержка 08.06.20 08:17
Добрый день.
Есть нюанс: объект компоненты нужно сохранить (в переменной модуля формы или в переменной модуля приложения), иначе при выходе из процедуры он уничтожится и внешних событий не будет. Пример модуля формы:

Перем Компонента;  //здесь сохраняем объект компоненты

Процедура ПриОткрытии()
	Если ПодключитьВнешнююКомпоненту("TCPClient32.dll", "TCP6", ТипВнешнейКомпоненты.Native) Тогда
		Компонента = Новый("AddIn.TCP6.TcpClient");
	КонецЕсли;

	Если Компонента=Неопределено Тогда
		Сообщить("Ошибка подключения компоненты!");
		Возврат;
	КонецЕсли;
	
КонецПроцедуры


Процедура ВнешнееСобытие(Источник, Событие, Данные)
	Сообщить("Внешнее событие   Источник="+Источник+"  Событие="+Событие+"  Данные="+Данные);
КонецПроцедуры

Процедура КнопкаOpenНажатие(Элемент)
	Компонента.Open("127.0.0.1",8001,Ложь);
КонецПроцедуры

Процедура КнопкаWriteНажатие(Элемент)
	ДвоичныеДанные = Новый ДвоичныеДанные("d:\Addin\TCPClient\write.txt");
	Компонента.Write(ДвоичныеДанные);
КонецПроцедуры

Процедура КнопкаReadНажатие(Элемент)
	ДвоичныеДанные  = Компонента.Read();
	ДвоичныеДанные.Записать("d:\Addin\TCPClient\read.txt");
КонецПроцедуры

Процедура КнопкаCloseНажатие(Элемент)
	Компонента.Close();
КонецПроцедуры
Показать
3. Nastyok_Kur 18.06.20 07:55 Сейчас в теме
Спасибо! Получилось!
Но почему-то сразу после получения события "Open", получаю событие "Write", хотя метод Write не вызываю. Это нормально?

Еще поясните, пожалуйста, что означает, что "Метод [Read] следует вызывать после получения события "Read"." Данное событие должно возникнуть до того, как вызываю метод Read?
4. Техподдержка 18.06.20 08:08
(3)
1. Событие "Write" говорит о том, tcp-сервер готов к приёму данных, т.е. можно отправить данные методом Write().

2. Событие "Read" говорит о том, что от tcp-сервера пришли новые данные и их можно считать методом Read().

3. Сразу после получения события "Open", возникает "Write" - это абсолютно нормально, т.е. открыто соединение и сервер готов к приёму данных.
5. Nastyok_Kur 18.06.20 08:21 Сейчас в теме
Ок! Спасибо за оперативный ответ!)
6. Техподдержка 18.06.20 08:39
(5) В принципе, можно отправлять данные на сервер не дожидаясь события "Write". Эти данные будут помещены в очередь и приняты сервером, когда он будет готов.
7. Nastyok_Kur 29.06.20 09:08 Сейчас в теме
Здравствуйте! Не подскажете еще, пожалуйста
Ранее, используя WinSock (решили уйти от нее, т.к. не адаптирована под х64) для интеграции с весами использовали следующий код "tcpClient.SendData 5", т.е. передавали в порт число 5.
Используя Вашу компоненту, каким образом мне надо передавать данные, чтоб эффект был такой же?
Прикрепленные файлы:
8. Техподдержка 29.06.20 09:21
(7) Добрый день.
В 1С есть ряд низкоуровневых инструментов для работы с двоичными данными, используя которые можно подготовить нужный пакет данных. В вашем случае:

Поток = Новый ПотокВПамяти;
ЗаписьДанных = Новый ЗаписьДанных(Поток);
ЗаписьДанных.ЗаписатьБайт(5);
ДвоичныеДанные = Поток.ЗакрытьИПолучитьДвоичныеДанные();

Компонента.Write(ДвоичныеДанные);
9. Nastyok_Kur 06.07.20 09:29 Сейчас в теме
Спасибо! то, что требовалось!
Подскажите еще, пожалуйста. Ранее, используя Winsock писали в порт строку, содержащую команды для печати для принтера этикеток (см. фото). Как правильнее, используя Вашу компоненту, отправить в порт то же самое?...
И в частности смущает, как передать VbNullString ?
Заранее спасибо!!!
Прикрепленные файлы:
10. Техподдержка 06.07.20 09:52
(9)
ости смущает, как передать VbNullString ?

Точно также: используйте ЗаписьДанных, метод ЗаписатьСимволы() или ЗаписатьСтроку().
11. Nastyok_Kur 06.07.20 11:21 Сейчас в теме
Какой символ будет интерпретирован, как VbNullString?
12. Техподдержка 06.07.20 11:28
(11) я не специалист по VB. Но похоже, что это пустая строку. Просто используется неявное приведение типов.
Оставьте свое сообщение

См. также

Публикаций не найдено

Попробуйте расширить область поиска, проверьте поисковый запрос и повторите попытку.

Или закажите индивидуальную разработку вашего решения.

Создать заказ на разработку