HukpoFuJl
AццkuЙ HukpoFuJl
- Сообщения
- 98
- Репутация
- 38
Пытаюсь писать бота для чата CommFort. Бот работает по средствам обмена UDP сообщениями с клиентом чата.
В общем смысл такой:
В настройках чата прописывается !Р и порт на который клиент чата будет отсылать сообщения боту.
Открываю этот порт при помощи UDPBind в своём боте...
Проверяю - бот отлично принимает сообщения, всё пучком...
Далее надо отправить сообщение в ответ. Тут и возникает проблема, т.к. Клиент чата воспринимает сообщения отправленные только с того порта и !Р, который прописан для приёма ботом, и разумеется открыт UDPBind'ом... А при попытке отослать пакет просто через UDPSend - ничего не происходит => Бот для отправки сам открывает произвольный порт, что в моём случае не допустимо...
Ах да, это только одна из проблем... Вторая(уже почти решённая) - Клиент чата при каждом новом подключении меняет порт, поэтому мой бот должен определить с какого порта пришёл первый пакет и далее отправлять данные на этот порт...
Есть идеи? Заранее благодарен...
Добавлено:
Ну вот к примеру простенький скрипт, писал для тестов UDP:
Ну и в общем ничего не выходит...
Жду предложений...
В общем смысл такой:
В настройках чата прописывается !Р и порт на который клиент чата будет отсылать сообщения боту.
Открываю этот порт при помощи UDPBind в своём боте...
Проверяю - бот отлично принимает сообщения, всё пучком...
Далее надо отправить сообщение в ответ. Тут и возникает проблема, т.к. Клиент чата воспринимает сообщения отправленные только с того порта и !Р, который прописан для приёма ботом, и разумеется открыт UDPBind'ом... А при попытке отослать пакет просто через UDPSend - ничего не происходит => Бот для отправки сам открывает произвольный порт, что в моём случае не допустимо...
Ах да, это только одна из проблем... Вторая(уже почти решённая) - Клиент чата при каждом новом подключении меняет порт, поэтому мой бот должен определить с какого порта пришёл первый пакет и далее отправлять данные на этот порт...
Есть идеи? Заранее благодарен...
Добавлено:
Сообщение автоматически объединено:
Ну вот к примеру простенький скрипт, писал для тестов UDP:
Код:
#include <GUIConstantsEx.au3>
#include <WindowsConstants.au3>
#include <EditConstants.au3>
UDPStartup()
$UDPBind = UDPBind("127.0.0.1", 16772) ; Порт С КОТОРОГО нужно отправлять данные
$socket = UDPOpen("127.0.0.1", 37045) ; Порт НА КОТОРЫЙ нужно отправлять данные
If @error <> 0 Then Exit
GUICreate ("send",300,200) ; Создаю ГУЙ со строкой ввода посылаемых данных и кнопкой "Send"
$but = GUICtrlCreateButton("Send",10,10)
$edit = GUICtrlCreateEdit("0х64000000000000000000000001000000030000002B2B2B",10,40,270,150)
GUISetState()
While 1
$msg = GUIGetMsg()
Select
Case $msg = $but ; Нажатие на Send
$data = GUICtrlRead ($edit) ; Считывание данных из поля $edit
UDPSend($socket, $data) ; Отправка UDP пакета на порт $socket
Case $msg = $GUI_EVENT_CLOSE
GuiDelete()
ExitLoop
Exit
EndSelect
WEnd
Func OnAutoItExit()
UDPCloseSocket($socket)
UDPShutdown()
EndFunc
Ну и в общем ничего не выходит...
Жду предложений...