Problema Socket

2 respostas
bestlinux

Galera,

Tenho o seguinte código:

ByteBuffer buf = ByteBuffer.allocateDirect(1024);
		//byte[] messageRX = null;
		//DGBufferMessage<ByteBuffer> message = null;

		int numBytesRead;
		
		
		try {
			numBytesRead = this.sChannel.read(buf);
		} catch (IOException e) {
			numBytesRead = -1;
		}

O problema é que a variavel numBytesRead esta ficando sempre com o valor 0.

Estou conectando assim ao Socket:

this.sChannel = SocketChannel.open();
this.sChannel.connect(new InetSocketAddress(host,port));
this.sChannel.configureBlocking(false);

Ou seja bem simples, sei que teria que colocar o código inteiro aqui para melhor achar uma solução, mas queria ideia de onde começar a “investigar” este problema.

Obrigado. :-o

2 Respostas

ViniGodoy

Se está vindo com 0, é porque naquele momento, seu canal não tem nenhum byte. Como você configurou ele para não ser bloqueante, ele não ficará esperando para que bytes cheguem. Para usar canais não bloqueantes, você deveria ler a documentação que fala sobre Selectors, e utiliza-los também.

ViniGodoy

Dá uma lida:
http://rox-xmlrpc.sourceforge.net/niotut

Criado 23 de dezembro de 2009
Ultima resposta 23 de dez. de 2009
Respostas 2
Participantes 2