_serfer_78_
Новичок
- Сообщения
- 16
- Репутация
- 0
Доброго времени суток уважаемые форумчане и гуру Autoit. Возник вопрос как правильно организовать работу с сокетами UDP . Для лучшего понимания вопроса набросал псевдокод...
Суть вопроса такова, кто разбирается подскажите как лучше организовать прием данных из игры, если есть функции с циклами? Если принимать данные в цикле "While 3" то все нормально работает, но когда интерпретатор выполняет код с циклом в теле функции цикл основной принимающий данные на UDP порт останавливается. Как бы извернуться так хитро чтобы обновляемые данные принимались и в циклах функций и основным кодом?
При использовании Adlib перегружается проц, хотя вроде бы не старый i3...
Или хотя бы при переходе в функцию с циклом прием данных из UDP перебрасывался туда же..
Ребята подскажите куда копать, очень нужно решить этот вопрос?
Код:
UDPStartup()
OnAutoItExitRegister("Cleanup") ; это нужно для закрытия порта при выходе
Global $socket = UDPBind('127.0.0.1', 7777) ; слушать сокет 7777
Global $dataMessage = '' ;новые данные
Global $dataOld = '' ; старые данные
If @Error <> 0 Then Exit
Dim $mArray[4]
While 3
$dataMessage = UDPRecv($socket, 1024)
$dataOld = $dataMessage
If $dataMessage <> "" And $dataMessage <> $dataOld Then
$mArray = StringSplit($dataMessage, ':', 1)
Switch $mArray[1]
Case ;если событие1 то
;Какой то код
Case ; если событие2 то
MuFunc() ; переход в функцию с циклом
EndSwitch
EndIf
WEnd
;Цикл внутри функции
Func MuFunc()
Do
If $mArray[1] ='значение' Then writelog('Получили значение в цикле функции')
Until ; пока False
EndFunc
Func Cleanup()
UDPCloseSocket($socket)
UDPShutdown()
Exit
EndFunc
Func writelog($log, $toX = 0, $toY = 0)
ToolTip($log, $toX, $toY)
EndFunc ;==>writelog
Суть вопроса такова, кто разбирается подскажите как лучше организовать прием данных из игры, если есть функции с циклами? Если принимать данные в цикле "While 3" то все нормально работает, но когда интерпретатор выполняет код с циклом в теле функции цикл основной принимающий данные на UDP порт останавливается. Как бы извернуться так хитро чтобы обновляемые данные принимались и в циклах функций и основным кодом?
При использовании Adlib перегружается проц, хотя вроде бы не старый i3...
Или хотя бы при переходе в функцию с циклом прием данных из UDP перебрасывался туда же..
Ребята подскажите куда копать, очень нужно решить этот вопрос?