2016-10-14 3 views
0

Я пытаюсь написать программу, которая постоянно прослушивает пакеты по UDP, но также периодически отправляет данные по UDP (каждые х секунд). Сложная часть - данные, которые я получаю, изменят отправленные мной данные, поэтому я не думаю, что могу просто выполнить одну из задач в отдельном потоке. Я также не могу позволить себе блокировать. Я надеялся, что кто-то может дать мне толчок в правильном направлении. Если это актуально, я программирую на Java и одновременно отправляю и получаю данные с несколькими клиентами.Параллельный прием и передача данных по UDP

+0

У вас возникли проблемы с использованием фреймворка, такого как Netty, для обработки такого рода задач? вы действительно не хотите обрабатывать потоки и NIO, если вы не знакомы ... это больно. –

ответ

0

Я не думаю, что я могу просто сделать одну из задач в отдельном потоке.

У вас все еще есть recv и отправка отдельных потоков. Но они не могут произойти асинхронно. Если данные, которые вы отправляете, будут зависеть от данных, которые вы получаете, вы не можете асинхронно отправлять/возвращать. Это модель запроса/ответа. Ответ должен быть отправлен только после получения запроса.

Я также не могу позволить себе иметь любое блокирование

Вы можете еще сокеты набор для неблокирующая

0

В то время как вы могли бы использовать отдельные темы, вы можете сделайте это однопоточным с простым таймаутом, связанным с вашей розеткой:

Следуйте приведенному здесь примеру:

set timeout for socket receive

Когда сокет выдает исключение тайм-аут, вы делаете свою периодическую отправку, а затем вернуться к приему данных на сокете.

 Смежные вопросы

  • Нет связанных вопросов^_^