Отправить(<Данные>)
Отправляет сообщение.
Функция Кнопка1_Нажатие() Экспорт БуферОтправки = ПолучитьБуферДвоичныхДанныхИзСтроки(ПолеВвода1.Текст); Клиент.Отправить(БуферОтправки); Клиент.Отправить(Символы.ПС + ПолеВвода1.Текст); КонецФункции
// Пример запуска клиента с созданием формы. Перем Ф, ПолеВвода1, Клиент; Процедура ВывестиСообщение(Данные) Попытка // В случае передачи в потоке перед самим сообщением размера сообщения используем этот вариант. РазмерДанных = Данные.ПрочитатьЦелое32(0); ДанныеСообщения = Данные.Прочитать(4, РазмерДанных); ДД = ПолучитьДвоичныеДанныеИзБуфераДвоичныхДанных(ДанныеСообщения); ОтдельноеСообщение = ПолучитьСтрокуИзДвоичныхДанных(ДД, КодировкаТекста.UTF8); Сообщить("Сообщение: " + " (" + РазмерДанных + " байт):" + Символы.ПС + ОтдельноеСообщение); Если (Данные.Размер - 4 - РазмерДанных) > 0 Тогда ОстатокДанных = Данные.Прочитать(4 + РазмерДанных, Данные.Размер - 4 - РазмерДанных); // Продолжаем делить данные на отдельные сообщения. ВывестиСообщение(ОстатокДанных); КонецЕсли; Исключение // В случае передачи в потоке никак не разделенных байтов используем этот вариант. ДанныеСообщения = Данные.Прочитать(0, Данные.Размер); ДД = ПолучитьДвоичныеДанныеИзБуфераДвоичныхДанных(ДанныеСообщения); ОтдельноеСообщение = ПолучитьСтрокуИзДвоичныхДанных(ДД, КодировкаТекста.UTF8); Сообщить("Сообщение: " + " (" + Данные.Размер + " байт):" + Символы.ПС + ОтдельноеСообщение); КонецПопытки; // Можно предусмотреть другие способы разделения потока байтов на отдельные сообщения, например посылка символа перевода строки. КонецПроцедуры Процедура КлиентПолучилДанные() Экспорт АргументыСобытия = Ф.АргументыСобытия; Данные = АргументыСобытия.Данные; // Данные, полученные клиентом, доступны нам как тип БуферДвоичныхДанных (BinaryDataBuffer). // Если с клиентом будет взаимодействовать сервер, который формирует сообщения по оговоренным заранее правилам, // появляется возможность делить данные на отдельные сообщения и кроме того знать тип данных отдельного сообщения. // Как частный случай можно на стороне сервера отправлять в сетевой поток сначала размер сообщения (четыре байта) // а затем само сообщение. ВывестиСообщение(Данные); Сообщить("========================"); КонецПроцедуры Функция Кнопка1_Нажатие() Экспорт БуферОтправки = ПолучитьБуферДвоичныхДанныхИзСтроки(ПолеВвода1.Текст); Клиент.Отправить(БуферОтправки); Клиент.Отправить(Символы.ПС + ПолеВвода1.Текст); КонецФункции Процедура ЗапускКлиента(параметр1, параметр2) Экспорт Контекст = Новый Структура(); Контекст.Вставить("Клиент", параметр1); Контекст.Вставить("Ф", параметр2); Стр = " |Перем ПотокСети1; | |Процедура ПроверитьСообщение() | Клиент.ОбработатьКлиентПолучилДанные(ПотокСети1.ПрочитатьВБуферДвоичныхДанных()); |КонецПроцедуры | |Ф.РазрешитьСобытия = Истина; |ПотокСети1 = Клиент.ПолучитьПотокSSL(); | |Пока Клиент.Подключен Цикл | Приостановить(100); | ПроверитьСообщение(); |КонецЦикла; |"; ЗагрузитьСценарийИзСтроки(Стр, Контекст); КонецПроцедуры ПодключитьВнешнююКомпоненту("C:\444\111\OneScriptForms\OneScriptForms\bin\Debug\OneScriptForms.dll"); Ф = Новый ФормыДляОдноСкрипта(); Форма1 = Ф.Форма(); Форма1.Отображать = Истина; Форма1.Показать(); Форма1.Активизировать(); Кнопка1 = Форма1.ЭлементыУправления.Добавить(Ф.Кнопка()); Кнопка1.Положение = Ф.Точка(10, 10); Кнопка1.Нажатие = Ф.Действие(ЭтотОбъект, "Кнопка1_Нажатие"); Кнопка1.Текст = "Отправить"; ПолеВвода1 = Форма1.ЭлементыУправления.Добавить(Ф.ПолеВвода()); ПолеВвода1.Текст = "Серверу ПРИВЕТ!"; ПолеВвода1.Стыковка = Ф.СтильСтыковки.Низ; ПолеВвода1.Высота = Форма1.КлиентВысота - 40; ПолеВвода1.МногострочныйРежим = Истина; ТекПуть = Новый Файл(ТекущийСценарий().Источник).Путь; Клиент = Ф.TCPКлиентSSL("127.0.0.1", 8080, ОбъединитьПути(ТекПуть, "certificate.crt")); Ф.КлиентПолучилДанные = Ф.Действие(ЭтотОбъект, "КлиентПолучилДанные"); МассивПараметров = Новый Массив(2); МассивПараметров[0] = Клиент; МассивПараметров[1] = Ф; Задание = ФоновыеЗадания.Выполнить(ЭтотОбъект, "ЗапускКлиента", МассивПараметров); Пока Не Клиент.Подключен Цикл Приостановить(100); КонецЦикла; Сообщить("Подключен"); Ф.ЗапуститьОбработкуСобытий();
TCPКлиентSSL (TCPClientSSL) Класс | Библиотека OneScriptForms