Страница 31 из 42
Re: Технология создания плагинов и программ-дополнений
Добавлено: 14:56, 30.01.2010
HukpoFuJl
О, отлично, доходчиво объяснил, спасиб огромное
![Smile :)](./images/smilies/icon_smile.gif)
Кстать,
Потом сам текст (длина + текст)
12 - длина текста - 18 байт
Далее 18 байт этого текста 28 30 5F EE 29 20 E3 E0 EC E0 F1 FF F7 E5 F1 F2 E2 EE (это (0_о) гамасячество)
Это не сам текст. а название канала
Сам текст (Длина + текст)
03 - длина текста - 3 байта
Далее 3 байта этого текста 31 32 33 (это 123)
Ещё раз спасибо, не ожидал так быстро добиться добиться подробного объяснения
ЗЫ: как я понял промежутки в виде 00 00 00 - это пропуски =)
Re: Технология создания плагинов и программ-дополнений
Добавлено: 16:20, 30.01.2010
~Alien~
ZigZagkms наверное нельзя найти через функцию FindWindowEx окно именно того канала, который вам нужен. Так как оно не имеет названия. Видимо
-=SJ=- просто проверяет с помощью спец. функции CommFortGetData активный на данный момент канал.
ЗЫ: как я понял промежутки в виде 00 00 00 - это пропуски =)
Нет. Просто длина текста должна быть представлена 4 байтами. Например, 05 00 00 00 (длина текста). Вот из-за этого и появляются эти нолики.
Re: Технология создания плагинов и программ-дополнений
Добавлено: 03:45, 31.01.2010
HukpoFuJl
~Alien~ писал(а):Нет. Просто длина текста должна быть представлена 4 байтами. Например, 05 00 00 00 (длина текста). Вот из-за этого и появляются эти нолики.
Кхм, тоесть сумма
dec значений
hex последовательности 4 байт? т.е.
05 00 00 00 = 5 + 0 + 0 + 0 = 5
Я правильно понял?
Re: Технология создания плагинов и программ-дополнений
Добавлено: 11:44, 31.01.2010
ZigZagkms
HukpoFuJl писал(а):Кхм, тоесть сумма dec значений hex последовательности 4 байт? т.е.
05 00 00 00 = 5 + 0 + 0 + 0 = 5
Я правильно понял?
Не совсем так, для того чтобы перевести число 05 00 00 00 (представим в виде 0 5 0 0 0 0 0 0 и умножая каждое число на 10 в степени позиции числа с правой стороны) в десятичное:
(0 *10^8) + (5 *10^7) + (0 * 10^6) + (0 * 10^5) + (0 * 10^4) + (0 * 10^3) + (0 * 10^2) + (0 * 10^1) = 5
Используя ваш неверный способ максимальное число (FF FF FF FF) которое возможно передать (FF + FF + FF + FF = 1020)
На самом же деле максимальное 32 разрядное число - 4 294 967 295 (умещается в 4 байта)
upd: что то я тут напутал) вообщем неверно сказал =)
Re: Технология создания плагинов и программ-дополнений
Добавлено: 07:50, 02.02.2010
-=SJ=-
В дополнение к своему предыдущему посту (о том как встроить окно плагина в чат) выкладываю исходник с комментариями на Delphi.
В этом примере создается простая форма, которая привязывается к определенному каналу (канал sticky) и просто кнопка, которая размещается на главной форме чата.
Re: Технология создания плагинов и программ-дополнений
Добавлено: 21:20, 04.02.2010
HukpoFuJl
Так, с получением сообщений от коммфорта разгрёбся... Назрел новый вопрос: Как их отсылать коммфорту?
Попробовал по обратному принципу, от принципа получения сообщения:
Например: ID: 100 (публикация в Events) Блок данных: число(стиль)+число(время)+число(тип протоколирования)+текст(текст публикации)
Код: Выделить всё
кол-во символов в тексте v
0х(64 00 00 00) (00) (00) (01) (03) (2B 2B 2B)
ID события^ стиль^время^ ^протоколир. ^текст
Вроде всё правильно, отправляю строку 0х64000000000001032B2B2B и ничего не происходит
Где я ошибся?
UPD: Заметил, что отсылаемый ботом код бот сам и принимает
![Sad :(](./images/smilies/icon_sad.gif)
Может я не туда его просто шлю??
Re: Технология создания плагинов и программ-дополнений
Добавлено: 22:45, 06.02.2010
-=SJ=-
HukpoFuJl писал(а):Так, с получением сообщений от коммфорта разгрёбся... Назрел новый вопрос: Как их отсылать коммфорту?
Попробовал по обратному принципу, от принципа получения сообщения:
Например: ID: 100 (публикация в Events) Блок данных: число(стиль)+число(время)+число(тип протоколирования)+текст(текст публикации)
Код: Выделить всё
кол-во символов в тексте v
0х(64 00 00 00) (00) (00) (01) (03) (2B 2B 2B)
ID события^ стиль^время^ ^протоколир. ^текст
Вроде всё правильно, отправляю строку 0х64000000000001032B2B2B и ничего не происходит
Где я ошибся?
UPD: Заметил, что отсылаемый ботом код бот сам и принимает
![Sad :(](./images/smilies/icon_sad.gif)
Может я не туда его просто шлю??
Нет не правильно
любое числовое значение в отправляемом сообщении должно быть 4х байтным
Код: Выделить всё
кол-во символов в тексте v
0х(64 00 00 00) (00 00 00 00) (00 00 00 00) (01 00 00 00) (03 00 00 00) (2B 2B 2B)
ID события^ стиль^ время^ ^протоколир. ^текст
Re: Технология создания плагинов и программ-дополнений
Добавлено: 12:47, 07.02.2010
HukpoFuJl
Да, я это заметил почти сразуже, ток в посте исправить не успел...
Всё равно одна и таже хрень, отправляю коммфорту строку 0x64000000000000000000000001000000030000002B2B2B. А ему как горохом в стену... Бот принимает свойже пакет, а коммфорт нет... Попробовал открыть на коммфорте ещё один порт отдельно, по которому мой бот не принимает сообщения... Отправляю строку на этот порт - результат тотже =(( никакого эффекта...
Re: Технология создания плагинов и программ-дополнений
Добавлено: 16:56, 07.02.2010
-=SJ=-
HukpoFuJl писал(а):Да, я это заметил почти сразуже, ток в посте исправить не успел...
Всё равно одна и таже хрень, отправляю коммфорту строку 0x64000000000000000000000001000000030000002B2B2B. А ему как горохом в стену... Бот принимает свойже пакет, а коммфорт нет... Попробовал открыть на коммфорте ещё один порт отдельно, по которому мой бот не принимает сообщения... Отправляю строку на этот порт - результат тотже =(( никакого эффекта...
Во первых порт бота на который бот принимает пакеты и с которого отправляет должен быть одним и тем же.
Во вторых слать сообщение надо на тот порт коммфорта с которого было принято сообщение от него. т.е. этот порт не задан фиксированно и от подключения к подключению может меняться, поэтому его надо определять программно.
Re: Технология создания плагинов и программ-дополнений
Добавлено: 04:16, 08.02.2010
HukpoFuJl
Блин, суть я понял, спасибо
![Smile :)](./images/smilies/icon_smile.gif)
То-то я тоже думал, как могут приложения вдвоём на одном порту работать нормально
![Smile :)](./images/smilies/icon_smile.gif)
))
Но всё равно меня тупит по ужасу...
Пишу на
AutoIT, эт скриптовый язык, по сути до ужоса упрощённый
С...
В общем функции обработки UDP там такие:
======================================
UDPBind
Создать UDP сокет, связанный со входящим подключением.
Синтаксис: UDPBind ( $IPAddr, $port )
Параметры:
$IPAddr - Адрес протокола интернет (Internet Protocol -IpV4) в виде "192.162.1.1".
$port - номер порта, соответствующего открываемому сокету.
Возвращаемое значение:
Идентификатор главного сокета. В случае ошибки возвращается -1, а значение @error устанавливается равным номеру ошибки согласно Windows API функции WSAGetLasterror.
======================================
UDPOpen
Открыть сокет, соответствующий подключению к имеющемуся серверу.
Синтаксис: UDPOpen ( $IPAddr, $port )
Параметры такиеже как и в UDPBind
Возвращаемое значение:
Массив array, в котором $array[1] равен реальному сокету, $array[2] - указанный IP адрес, а $array[3] - порт. Эта информация требуется в последующих вызовах UDPSend(). В случае ошибки массив array, в котором $array[1] равен -1, а значение @error устанавливается равным номеру ошибки согласно Windows API функции WSAGetLasterror.
Замечания:
Используется обмена данными приложения-клиента с сервером.
======================================
UDPRecv
Получить данные, используя открытый ранее сокет
Синтаксис: UDPRecv ( $socket, $maxlen )
Параметры:
$socket - Главный идентификатор сокета (SocketID), возвращаемый функцией UDPBind.
$maxlen - Максимальное число получаемых символов
Возвращаемое значение:
Строка данных, переданных через сокет. В случае ошибки возвращается пустая строка "", а значение @error устанавливается равным номеру ошибки согласно Windows API функции WSAGetLasterror.
======================================
UDPSend
Выслать данные, используя открытый ранее сокет
Синтаксис: UDPSend ( $socket, $data )
Параметры:
$socket - Главный идентификатор сокета (SocketID), возвращаемый функцией UDPOpen.
$data - Содержание строки передаваемого текста или бинарной строки в сокет подключения
Возвращаемое значение:
Количество переданных через сокет данных. В случае ошибки возвращается 0, а значение @error устанавливается равным номеру ошибки согласно Windows API функции WSAGetLasterror.
======================================
Ну это в кратце нужные функции...
В общем делаю(в кратце):
$bindport = UDPBind (127.0.0.1, 16770) ;открываю порт для приёма данных.
$openport = UDPOpen (127.0.0.1, 16770) ;получаю массив из:
$openport[1] = порт по которому коммфорт отправляет данные,
$openport[2] = !Р адрес,
$openport[3] = порт по которому я отсылаю данные(16770)
$datarecive = UDPRecv ($bindport, 100000) ;запрос на получение данных (у меня он в цикле)
;
$datarecive = строка отправляемая коммфортом...
; далее бла-бла-бла, тело программы...
; и потом выполнение отсылки готового кода $datasend
UDPSend ($openport[1], $datasend)
;в результате 0 эффекта,
$datasend имеет правильный формат, всё по госту короче
![Smile :)](./images/smilies/icon_smile.gif)
Но коммфорт молчит, хотьбы ошибку выдал чтоли...
Спасите заблудшую душу
![Embarassed :oops:](./images/smilies/icon_redface.gif)
Re: Технология создания плагинов и программ-дополнений
Добавлено: 08:06, 08.02.2010
Maxim Mirgorodsky
При подключении к серверу CommFort client отправляет всем программам-дополнениям первый пакет по которому можно узнать адрес (порт), по которому необходимо слать сообщения CommFort'у. При этом отправлять сообщения необходимо строго с того адреса (и порта), который указан в UDPAddons.ini.
Re: Технология создания плагинов и программ-дополнений
Добавлено: 22:56, 13.02.2010
DeBugger
Я просмотрел всю тему, но что то не нашел ни одного примера не дельфе, который реализовывал бы простейшего UPD бота. Ткните носом пожалуйста, если я пропустил
Добавлено:
Какбэ мне бы только саму работу с UDP а то не компилится не один пример. Среда Delphi 2009
Re: Технология создания плагинов и программ-дополнений
Добавлено: 23:42, 13.02.2010
~Alien~
Re: Технология создания плагинов и программ-дополнений
Добавлено: 23:52, 13.02.2010
DeBugger
Re: Технология создания плагинов и программ-дополнений
Добавлено: 06:19, 14.02.2010
dv
[Сообщение yдалено]