В моем приложении я использовал операцию чтения/записи сокета для связи с сервером. Когда сервер выключен, операция записи сокета генерирует исключение "конвейер" только во второй раз. Первая операция записи не вызывает никаких исключений. Может ли кто-нибудь сказать мне причину.
код, который я использовал для этого,
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();
}
}
Спасибо заранее...
Существует только одна причина для ошибок разбитых труб. Вы написали соединение, которое уже было закрыто другим концом. Это само по себе является ошибкой протокола приложения, и это может быть вызвано ошибкой протокола предшествующего приложения с этой целью, в результате чего сверстник может закрыть соединение в раздражении.