Probleme mit SocketChannels
-
Hiho,
für nichtblockierendes Lesen hab ich einen einfachen Server und einen Client mit den SocketChannels geschrieben.
Server:
m_serverSocketChannel = ServerSocketChannel.open(); m_serverSocketChannel.socket().bind(new InetSocketAddress(50003)); SocketChannel socketChannel = m_serverSocketChannel.accept(); m_converter.toByteArray("21___|||___Ich brauch neues Bier"); socketChannel.write(m_converter.getByteBuffer()); m_converter.toByteArray("10___|||___012345678"); socketChannel.write(m_converter.getByteBuffer());
Auf Client-Seite:
m_socket = SocketChannel.open(); m_socket.configureBlocking(false); m_socket.connect(new InetSocketAddress(host,Integer.valueOf(port).intValue())); while (!m_socket.finishConnect()) { //waiting }
Lesen in einer Endlosschleife (testweise) mache ich folgender Maßen:
int count = m_socket.read(m_converter.getByteBuffer()); if (count == -1) { throw new Exception("Verbindung weg"); } if (count != 0) { ///mach was
Folgendes Problem tritt nun auf:
mach ich auf Server-Seite zwischen den einzelnen Schreibaufrufen ein Thread.sleep(1), dann liest der Client alle folgenden Nachrichten nicht mehr. Außerdem kommt auch weder -1 noch eine Exception, wenn der Server seine Verbindung mit close geschlossen hat- Woran liegt das? Ich bin da grad sehr ideenlos oOMfG Pellaeon