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 oO

    MfG Pellaeon


Anmelden zum Antworten