[Java lista] Socket broken
Schmidt András
asch at freemail.hu
2008. Júl. 14., H, 13:13:52 CEST
Szia!
Eddig csak szinkron TCP sockettel próbáltam. Nekem az a tapasztalatom,
hogy amíg nincs forgalom addig nem detektálják a kliensek a leszakadást.
Ahhoz hogy legyen forgalom úgy kell felépítened a protokollodat, hogy
időnként valami iamalive vagy ping üzenet azért menjen. Persze ez - más
szempontból - felesleges forgalmat generál. Gondolom ezért nincs benne
alapból.
Schmidt András
zamek wrote:
> Hello,
>
> Szetguglizom magam es nem talalok hasznalhato megoldast! :(
>
> Van egy tcp socket kliens-em, aminek detektalnia kellene, ha megszakad a
> kapcsolat. Egyszeruen nem talalok mukodo megoldast.
>
> Egyebkent rendesen mukodik, csak a szakadast nem veszi eszre.
>
> Amit probaltam:
> 1. Thread+NioSocket.
> inicializalaskor beallitotm a timeout-ot.
>
> private void readIncomingMessages() throws IOException,
> CharacterCodingException {
> // check for incoming mesgs
> // non-blocking select, returns immediately regardless of how many
> keys are ready
> readSelector.selectNow();
> // fetch the keys
> Set readyKeys = readSelector.selectedKeys();
> // run through the keys and process
> Iterator i = readyKeys.iterator();
> while (i.hasNext()) {
> SelectionKey key = (SelectionKey) i.next();
> i.remove();
> channel = (SocketChannel) key.channel();
> readBuffer.clear();
> // read from the channel into our buffer
> long nbytes = channel.read(readBuffer);
> // use a CharsetDecoder to turn those bytes into a string
> // and append to our StringBuffer
> readBuffer.flip();
> StringTokenizer st = new StringTokenizer(
> asciiDecoder.decode(readBuffer).toString(), "\n\r");
> while (st.hasMoreElements()) {
> processIncomingMessage(st.nextToken());
> }
> readBuffer.clear();
> }
> }
>
> A while-ba be sem megy, nincs exception.
>
> 2. Apache Mina. Eszre sem veszi, ha megszakad a kapcsolat, nincs exception. A
> doksija irja, hogy nem konnyu eszrevenni, nezzem meg a Quarz forrasat.
>
> Nem tudom elhinni, hogy ez egy ilyen oriasi problema! Vagy csak en benazok?
>
>
További információk a(z) Javalist levelezőlistáról