Операция записи в Android Socket

1

В моем приложении я использовал операцию чтения/записи сокета для связи с сервером. Когда сервер выключен, операция записи сокета генерирует исключение "конвейер" только во второй раз. Первая операция записи не вызывает никаких исключений. Может ли кто-нибудь сказать мне причину.

код, который я использовал для этого,

       SocketAddress sockaddr = new InetSocketAddress(SERVERIP, 8080);
        Socket nsocket = new Socket();
        nsocket.setSoTimeout(3000);
        nsocket.connect(sockaddr, 5000); 
        if (nsocket.isConnected()) 
            { 
            mmInStream = nsocket.getInputStream();
            mmOutStream = nsocket.getOutputStream();
            }

код для операции записи

    public void write(byte[] buffer) {          
    try {
        mmOutStream.write(buffer);
     } 
     catch (Exception e) {
        e.printStackTrace();
     }
 }

Спасибо заранее...

Теги:
exception
sockets

1 ответ

0

Существует только одна причина для ошибок разбитых труб. Вы написали соединение, которое уже было закрыто другим концом. Это само по себе является ошибкой протокола приложения, и это может быть вызвано ошибкой протокола предшествующего приложения с этой целью, в результате чего сверстник может закрыть соединение в раздражении.

  • 0
    Исключение выдается, потому что я остановил сервер. Моя настоящая проблема заключается в том, что исключение не выдается в первый раз, когда я выполняю операцию записи после выключения сервера. Но это вызывает исключение в следующий раз, когда я пытаюсь написать.
  • 0
    @Unnnikrishnan PV это в основном из-за буферизации. С этим ничего не поделаешь. Вы не можете сразу обнаружить сбой соединения в TCP, это всегда занимает несколько секунд.
Показать ещё 1 комментарий

Ещё вопросы

Сообщество Overcoder
Наверх
Меню