Selector gibt nichts zurück

Thalion

Mitglied
Hallöchen,

ich schreibe gerade an einem Netzwerkcode bzw. an dem Server.
Mein Problem besteht darin, dass ich zwei Selector erstellt habe mit 2 SelectionKeys.
Wenn ich jetzt aber einen Channel registrieren lassen, bekomme ich in keinem Falle etwas zurück,
außer die Connection wurde bereits beendet ( IDK ). Ich wäre glücklich, wenn mir jemand den Fehler zeigen könnte.

Java 8 : 1.8.0 45-b14

Java:
package neogc.net.network.runtime;

import java.io.IOException;
import java.nio.channels.ClosedChannelException;
import java.nio.channels.SelectionKey;
import java.nio.channels.Selector;
import java.nio.channels.SocketChannel;
import java.util.Set;


public class Distributor {
	
	private final Selector rs, ws;
	
	public Distributor() throws IOException {
		rs = Selector.open();
		ws = Selector.open();
	}
	
	public void addChannel(SocketChannel channel) throws ClosedChannelException {
		channel.register(rs, SelectionKey.OP_READ);
		channel.register(ws, SelectionKey.OP_WRITE);
	}
	
	public Set<SelectionKey> nextReadChannels() throws IOException {
		System.out.println(rs.select(3L));
		return rs.selectedKeys();
	}
	
	public Set<SelectionKey> nextWriteChannels() throws IOException {
		ws.select(3L);
		return ws.selectedKeys();
	}


}

Mfg,
Thalion
 
So,

nach ca. 4,5h dämlich auf den Code gegucke habe ich endlich den Fehler gefunden.
Der ByteBuffer im Testclient muss vor dem Senden geflipt werden. Heißt, dass die Remaining bytes nicht vorhanden waren, womit auch nichts übertragen wurde.

Mfg,
Thalion
 

Neue Themen


Zurück
Oben