DatagramChannel alguem ja usou?

Ola pessoal.

Sou novato em Java. Mais to precisnado fazer um servidor em Java que use UDP.

Me indicaram DatagramChannel para eu utilizar com eventos. Não queria fazer algo multithreads

só que não consegui entender direito como ele funciona.

minha principal duvida é como setar a porta que o UDP vai usar.

vou postar o codigo que fiz

//inicialização
m_objSelector=Selector.open();
m_objSocket=DatagramChannel.open();
m_objSocket.configureBlocking(false);
m_objSocket.register(m_objSelector,SelectionKey.OP_READ);

//codigo que fica no loop principal
try
{
	int n= m_objSelector.selectNow();
	System.out.println("Returned from select: " + n);
}
catch(IOException e)
{
      System.err.println(e+"Exception");
}		
		
Set readyKeys= m_objSelector.selectedKeys();

for(Iterator i= readyKeys.iterator(); i.hasNext(); )
{
    SelectionKey key= (SelectionKey)i.next();
    i.remove();
    if(key.isReadable())
    {
	System.out.println("Got Read");
     }
}

Eu programo a anos em C++. Mais to tendo que fazer esse quebra galho em Java. Alguem pode ajudar?

obrigado
Bitten

OI

Bitten, seja bem vindo ao PJ :):slight_smile:

Olhe, por acaso essas classes: Selector e DatagramChannel são do SDK? Eu nunca fiz nada com UDP, mas neste trecho de código não se está defiinindo porta e nem enderço de servidor, só esta sendo feita a abertura da conexão

T+

sim são do SDK.

ai que esta. não sei como definir a porta para o socket ficar escutando.

descrição da classe:
http://java.sun.com/j2se/1.4.2/docs/api/java/nio/channels/DatagramChannel.html

abraços
Bitten

De uma olhada no Livro JAVA NIO da O’Reilly

Nunca utilizei o nio com udp, mas o exemplo que ele mostra é.

DatagramChannel channel = DatagramChannel.open( );
DatagramSocket socket = channel.socket( );
socket.bind (new InetSocketAddress (portNumber));

Abraço
luiz