За одну секунду сервер может подключить 1700 клиентов.
Копировать Выделить всё// запустите в терминале файл Сервер.os с таким содержимым Перем КС; Функция Сервер_ПриПодключенииКлиента() Экспорт СерверКлиент = КС.АргументыСобытия.Клиент; Сообщить("Подключен новый клиент. Идентификатор клиента = " + СерверКлиент.ИдентификаторКлиента); Сообщить("========================================"); КонецФункции Процедура Сервер_ПриПолученииСообщения() Экспорт Сообщение = КС.АргументыСобытия.Сообщение; Отправитель = КС.Отправитель; ОтправительИдентификаторКлиента = Отправитель.ИдентификаторКлиента; Если ("" + Сообщение) = "КсСообщениеТекст" Тогда Сообщить("Клиент отправил сообщение: " + Сообщение.Text + " (ИдентификаторКлиента = " + Отправитель.ИдентификаторКлиента + ")"); Сообщить("========================================"); ИначеЕсли ("" + Сообщение) = "КсСообщениеБайты" Тогда Сообщить("Клиент отправил файл: " + СтрДлина(Сообщение.Данные) + "-" + Отправитель.ИдентификаторКлиента + "-" + Сообщение.Данные); // Сообщение.Данные.Записать("C:\777\МойФайл.jpg"); Сообщить("========================================"); КонецЕсли; КонецПроцедуры Процедура Сервер_ПриОтключенииКлиента() Экспорт Сообщить("Клиент отключен! Идентификатор клиента = " + КС.АргументыСобытия.Клиент.ИдентификаторКлиента); Сообщить("========================================"); КонецПроцедуры ПодключитьВнешнююКомпоненту("C:\444\111\OneScriptClientServer\OneScriptClientServer\bin\Debug\OneScriptClientServer.dll"); КС = Новый КлиентСерверДляОдноСкрипта(); TCPСервер1 = КС.TCPСервер(10085); TCPСервер1.ПриПодключенииКлиента = КС.Действие(ЭтотОбъект, "Сервер_ПриПодключенииКлиента"); TCPСервер1.ПриОтключенииКлиента = КС.Действие(ЭтотОбъект, "Сервер_ПриОтключенииКлиента"); TCPСервер1.ПриПолученииСообщения = КС.Действие(ЭтотОбъект, "Сервер_ПриПолученииСообщения"); // Запустим сервер TCPСервер1.Начать(); Сообщить("Сервер запущен"); // Запустим цикл обработки событий Пока КС.Продолжать Цикл КС.ПолучитьСобытие().Выполнить(); КонецЦикла; //========================================================================================== // Затем запустите в терминале файл Клиент.os с таким содержимым ПодключитьВнешнююКомпоненту("C:\444\111\OneScriptClientServer\OneScriptClientServer\bin\Debug\OneScriptClientServer.dll"); КС = Новый КлиентСерверДляОдноСкрипта(); Время1 = ТекущаяУниверсальнаяДатаВМиллисекундах(); Для А = 0 По 16000 Цикл TCPКлиент1 = КС.TCPКлиент(КС.TCPКонечнаяТочка("127.0.0.1", 10085)); Попытка TCPКлиент1.Подключить(); Исключение Сообщить("А = " + А); Прервать; КонецПопытки; КонецЦикла; Время2 = ТекущаяУниверсальнаяДатаВМиллисекундах(); Сообщить("" + (А - 1) + " клиентов подключено за " + (Время2 - Время1) + " мс"); // TCPКлиент1.Отключить(); // КС.Продолжать = Ложь; // Запустим цикл обработки событий Пока КС.Продолжать Цикл КС.ПолучитьСобытие().Выполнить(); КонецЦикла;
Клиент посылает 15000 коротких текстовых сообщений за одну секунду. Сервер все их асинхронно принимает и обрабатывает.
Копировать Выделить всё// запустите в терминале файл Сервер.os с таким содержимым Перем КС; Функция Сервер_ПриПодключенииКлиента() Экспорт СерверКлиент = КС.АргументыСобытия.Клиент; Сообщить("Подключен новый клиент. Идентификатор клиента = " + СерверКлиент.ИдентификаторКлиента); Сообщить("========================================"); КонецФункции Процедура Сервер_ПриПолученииСообщения() Экспорт Сообщение = КС.АргументыСобытия.Сообщение; Отправитель = КС.Отправитель; ОтправительИдентификаторКлиента = Отправитель.ИдентификаторКлиента; Если ("" + Сообщение) = "КсСообщениеТекст" Тогда Сообщить("Клиент отправил сообщение: " + Сообщение.Text + " (ИдентификаторКлиента = " + Отправитель.ИдентификаторКлиента + ")"); Сообщить("========================================"); ИначеЕсли ("" + Сообщение) = "КсСообщениеБайты" Тогда Сообщить("Клиент отправил файл: " + СтрДлина(Сообщение.Данные) + "-" + Отправитель.ИдентификаторКлиента + "-" + Сообщение.Данные); // Сообщение.Данные.Записать("C:\777\МойФайл.jpg"); Сообщить("========================================"); КонецЕсли; КонецПроцедуры Процедура Сервер_ПриОтключенииКлиента() Экспорт Сообщить("Клиент отключен! Идентификатор клиента = " + КС.АргументыСобытия.Клиент.ИдентификаторКлиента); Сообщить("========================================"); КонецПроцедуры ПодключитьВнешнююКомпоненту("C:\444\111\OneScriptClientServer\OneScriptClientServer\bin\Debug\OneScriptClientServer.dll"); КС = Новый КлиентСерверДляОдноСкрипта(); TCPСервер1 = КС.TCPСервер(10085); TCPСервер1.ПриПодключенииКлиента = КС.Действие(ЭтотОбъект, "Сервер_ПриПодключенииКлиента"); TCPСервер1.ПриОтключенииКлиента = КС.Действие(ЭтотОбъект, "Сервер_ПриОтключенииКлиента"); TCPСервер1.ПриПолученииСообщения = КС.Действие(ЭтотОбъект, "Сервер_ПриПолученииСообщения"); // Запустим сервер TCPСервер1.Начать(); Сообщить("Сервер запущен"); // Запустим цикл обработки событий Пока КС.Продолжать Цикл КС.ПолучитьСобытие().Выполнить(); КонецЦикла; //========================================================================================== // Затем запустите в терминале файл Клиент.os с таким содержимым ПодключитьВнешнююКомпоненту("C:\444\111\OneScriptClientServer\OneScriptClientServer\bin\Debug\OneScriptClientServer.dll"); КС = Новый КлиентСерверДляОдноСкрипта(); TCPКлиент1 = КС.TCPКлиент(КС.TCPКонечнаяТочка("127.0.0.1", 10085)); TCPКлиент1.Подключить(); Время1 = ТекущаяУниверсальнаяДатаВМиллисекундах(); Если TCPКлиент1.СостояниеСоединения = 0 Тогда Для А = 0 По 18000 Цикл // Отправим сообщение на сервер. TCPКлиент1.ОтправитьСообщение(КС.СообщениеТекст("Это " + А + " текстовое сообщение!!!!!!!")); КонецЦикла; КонецЕсли; Время2 = ТекущаяУниверсальнаяДатаВМиллисекундах(); Сообщить("" + А + " сообщений отправлено за " + (Время2 - Время1) + " мс"); // TCPКлиент1.Отключить(); // КС.Продолжать = Ложь; // Запустим цикл обработки событий Пока КС.Продолжать Цикл КС.ПолучитьСобытие().Выполнить(); КонецЦикла;