но мне нужно получить результат в этом же методе
Без асинхронности и прочих корутинов Котлина по-хорошему этого не сделать.
Если ты запустишь цикл - ты заморозишь поток, будет лаг.
Можно попробовать использовать обычную джавошную попытку в псевдоасинхронность: CompletableFuture (гуглится легко).
Основной принцип - ты подготоваливаешь переменные, и дальше запускаешь код в компьютеблФьючере. Твой поток уходит по своим делам, а фьючер создает свой поток, в котором уже можно смело делать циклы ожидания ответа.
Более правильный вариант уже написали: ты отправляешь пакет проверки и всё, поток уходит по своим делам. А когда получаешь ответный пакет - уже обрабатываешь его. Логику придется переделать так, чтобы это было два независимых куска кода. Можно сказать, что ты всегда реагируешь на ответный пакет как будто ожидал его. Даже если ты не посылал пакет запроса.
Если тебе нужна при этом какая-то информация на момент смерти - храни её, прочитаешь и удалишь когда придет ответ. Так же обязательно храни признак самого факта отправки запроса - чтобы на момент получения можно было проверить, что он был и на ответ надо реагировать.
Помни, что первое правило сетевого программирования - "клиент всегда врёт и всегда пытается поиметь гешефт".