Что нового

Вопрос прием данных в цикле через UDP сокеты

_serfer_78_

Новичок
Сообщения
16
Репутация
0
Доброго времени суток уважаемые форумчане и гуру Autoit. Возник вопрос как правильно организовать работу с сокетами 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 перебрасывался туда же..

Ребята подскажите куда копать, очень нужно решить этот вопрос?
 
Автор
S

_serfer_78_

Новичок
Сообщения
16
Репутация
0
Некропост))..
не стал заморачиваться написал прогу на С#
тема закрыта..
 
Верх