Re: Исключение при разрыве связи в сокете
От: shmakov Россия  
Дата: 23.05.02 10:27
Оценка:
Здравствуйте dros, Вы писали:

D>Ситуация такая:

D>Клиент ожидает данные от сервера.
D>В момент ожидание read происходит разрыв связи со стороны сервера.
D>Как я понимаю должно возникать исключение, однако его не происходит.
D>В итоге при закрытом соединении программа останавливается
D>на sock.getInputStream().read(b, 0, 1)

D>Подскажите как отследить момент разрыва.


D>try

D>{
D> Socket sock = new Socket("127.0.0.1",3000);
D> byte[] b = new byte[1];
D> sock.getInputStream().read(b, 0, 1);
D>}
D>catch(IOException e)
D>{
D> System.out.println(e.toString( ));
D>}

[code]
clientSend = new PrintStream(mySocket.getOutputStream());
clientReceive = mySocket.getInputStream();
mySocket.setSoTimeout(TIMEOUT);
int size = 0;
boolean err_flag = false;
while (true) {
byte [] buf = new byte [1024];
if (clientReceive.read(buf)<1024) {
if (buf[0]==0) {
byte [] info = new byte [1];
info [0] = 1;
clientSend.write(info);
clientSend.flush();
} else err_flag = true;

} else {
err_flag = true;
}
if (err_flag) break;
}
} catch (IOException e) {
} finally {
try {
System.out.println ("Close");
if (clientReceive!=null) clientReceive.close();
if (clientSend!=null) clientSend.close();
if (mySocket!=null) mySocket.close();
} catch (IOException e) {
System.out.println(e.toString( ));
}
}
[code]
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.