Основные свойства компоненты:
isEnable - возвращает 1, если открыты сокеты и можно отправлять/принимать данные
Методы:
Enable(ПортНомер) - открывает выбранный порт для входящих сообщений и устанавливает свойство isEnable=1
Sendto(Адрес,Порт,Сообщение) - посылает данные на удаленный сокет
Disable - прекращает прием/отправку и закрывает порты
Ограничения:
1. Не поддерживается(пока) рестарт чата "на лету", если использовали метод Disable, то Enable работать не будет до закрытия 1С.
2. Ограничение на длину сообщения - 512 символов
3. В "хвосте" каждого сообщения есть служебная информация вида:
500:port:27015 recvfrom->192.168.0.77::37420
500 - количество символов в пришедшем пакете (без учета "хвоста")
:port:27015 - на этом порту удаленный комп. ждет ответных сообщений
recvfrom->192.168.0.77::37420 - адрес и порт, с которого пришли данные(на этот порт не надо ничего отправлять, он для информации)
Пример использования под 7.7:
// файлик лежит в КаталогеИБ
ЗагрузитьВнешнююКомпоненту("Udptor.dll");
Чат = СоздатьОбъект("Addin.Chat");
// Открываем порт для приема сообщений
Чат.Enable("27015");
// Проверяем результат
Если Чат.isEnabled=0 Тогда
Сообщить("Ошибка при открытии порта!");
КонецЕсли;
// Отправка сообщений
Процедура ОтправитьСообщение(Адрес,Порт,Сообщение)
Если Чат.isEnabled = 0 Тогда
Сообщить("Сервер не запущен!");
Возврат;
КонецЕсли;
Чат.Sendto(Адрес,Порт,Сообщение);
КонецПроцедуры
// Например
ОтправитьСообщение("192.168.0.77","27015","Это тестовое сообщение");
// Обработку входящих сообщений производим в процедуре
Процедура ОбработкаВнешнегоСобытия(Источник,Событие,Данные)
Если Источник = "UdptorChat" И Событие = "Server" Тогда
Сообщить(Данные);
ИначеЕсли Источник = "UdptorChat" И Событие = "Error" Тогда
Сообщить("Ошибка !"+Данные);
КонецЕсли;
КонецПроцедуры
Использование в 1С 8:
1. Копируем компоненту на локальный диск
2. Регистрируем командой regsvr32 "путь к компоненте"\udptor.dll
В процессе регистрации возможно появление ошибки " не найдена точка входа..." при этом компонента будет работать. С ошибкой еще не разобрался, появляется и на Win2k и на XP, но редко.
Запуск в 8-ке
Результат = "";
ИмяВК="AddIn.Udptor";
Попытка
ПодключитьВнешнююКомпоненту(ИмяВК);
Результат = 1;
Исключение
Сообщить("Не удалось загрузить внешнюю компоненту по причине: "+ОписаниеОшибки());
КонецПопытки;
Сообщить(Результат);
Чат = Новый ("AddIn.Chat");
// Далее работаем как в 7.7 ч.з. обработку событий