МногопоточныйTCPСерверSSL.МаксимальныйРазмерСообщения (MultithreadedTCPServerSSL.MaxMessageSize) Свойство

Использование

Чтение и запись.

Значение

Тип: Число.

Возвращает или задает ограничение на размер принимаемого сообщения в байтах. По умолчанию 128 MB.

Примечание

Пример

Сервер.МаксимальныйРазмерСообщения = 120;
Полный пример кода



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

Смотрите также

МногопоточныйTCPСерверSSL (MultithreadedTCPServerSSL) Класс | Библиотека OneScriptForms