2012-04-22 2 views
-1

В другой теме справки мне сказали использовать метод select() для моего UDP-сервера, но я понятия не имею, как его реализовать. Моя программа зависала над оператором socket.receive(), и мне сказали, что использование select() поможет.Java - как использовать селектор для udp?

Спасибо.

+2

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

+1

* вздох * может кто-то просто сказать мне, как его использовать? –

+0

Вы указали в своем [последнем посте] (http://stackoverflow.com/questions/10262342/java-udp-applet-freezing), что ваш апплет был всего лишь двухсторонним. Если это так, использование «Selector» над типичным подходом «нить за соединение», скорее всего, повлечет за собой штраф за производительность, но без просмотра вашего кода это будет трудно понять. Мое первоначальное предположение по вашей проблеме заключается в том, что вы блокируете поток Dispatch Event, но опять же, мне нужно будет узнать, как ваш код знает. – Jeffrey

ответ

-1

Если ваш код висит на методе receive(), это то, что он должен делать. Если вы не хотите, чтобы он блокировался навсегда, вызовите DatagramSocket.setSoTimeout() с подходящим значением.

Вопрос о том, как использовать NIO на форуме, не подходит. На сайте Oracle есть учебники, а пример кода представлен в JDK.

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