Я пытаюсь написать программу, которая постоянно прослушивает пакеты по UDP, но также периодически отправляет данные по UDP (каждые х секунд). Сложная часть - данные, которые я получаю, изменят отправленные мной данные, поэтому я не думаю, что могу просто выполнить одну из задач в отдельном потоке. Я также не могу позволить себе блокировать. Я надеялся, что кто-то может дать мне толчок в правильном направлении. Если это актуально, я программирую на Java и одновременно отправляю и получаю данные с несколькими клиентами.Параллельный прием и передача данных по UDP
ответ
Я не думаю, что я могу просто сделать одну из задач в отдельном потоке.
У вас все еще есть recv и отправка отдельных потоков. Но они не могут произойти асинхронно. Если данные, которые вы отправляете, будут зависеть от данных, которые вы получаете, вы не можете асинхронно отправлять/возвращать. Это модель запроса/ответа. Ответ должен быть отправлен только после получения запроса.
Я также не могу позволить себе иметь любое блокирование
Вы можете еще сокеты набор для неблокирующая
В то время как вы могли бы использовать отдельные темы, вы можете сделайте это однопоточным с простым таймаутом, связанным с вашей розеткой:
Следуйте приведенному здесь примеру:
set timeout for socket receive
Когда сокет выдает исключение тайм-аут, вы делаете свою периодическую отправку, а затем вернуться к приему данных на сокете.
У вас возникли проблемы с использованием фреймворка, такого как Netty, для обработки такого рода задач? вы действительно не хотите обрабатывать потоки и NIO, если вы не знакомы ... это больно. –