запись через отключенный сокет не вызывает

писатель:

   socket.setSendBufferSize(1);
   socket.setTcpNoDelay(true);
   writer = new BufferedWriter(
          new OutputStreamWriter(socket.getOutputStream(), "UTF-8"));

используется следующим образом:

try {
        writer.write(packet.toXML());
        writer.flush();
        ...
    }
    catch (Exception ioe){
        if (!done) {
            done = true;
            ... 
        }       
    }

Это код на стороне клиента. Когда его сервер отключает сокет (также java-код), почему клиент бросает только через 5-10 минут? Разве он не должен срабатывать при первой попытке записи через мертвое соединение?

Спасибо

Изменить:

после выключения сервера, вот состояния TCP:

tcp        0      0 server:443     client:50283   FIN_WAIT2 

tcp4       0      0  cient.50283     server.443       CLOSE_WAIT

Edit2:

клиент является приложение для Android. Сбегал с телефона, второй записанный пакет вызывает бросок. Выполняется из эмулятора (Mac внизу), четвертая запись () выбрасывает.

5
задан kellogs 9 August 2011 в 02:13
поделиться