Исключение при разрыве связи в сокете
От: dros  
Дата: 17.05.02 17:06
Оценка:
Ситуация такая:
Клиент ожидает данные от сервера.
В момент ожидание read происходит разрыв связи со стороны сервера.
Как я понимаю должно возникать исключение, однако его не происходит.
В итоге при закрытом соединении программа останавливается
на sock.getInputStream().read(b, 0, 1)

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

try
{
Socket sock = new Socket("127.0.0.1",3000);
byte[] b = new byte[1];
sock.getInputStream().read(b, 0, 1);
}
catch(IOException e)
{
System.out.println(e.toString( ));
}
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]
Re: Исключение при разрыве связи в сокете
От: Пластеев Владимир  
Дата: 23.05.02 12:18
Оценка:
На самом деле, там тебе будет приходить NULL при чтении...
Re: Re: как отследить момент разрыва
От: iZEN СССР  
Дата: 23.05.02 14:51
Оценка:
Здравствуйте 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>}

См. http://www.relib.com/forums/topic.asp?id=747639
Может поможет. :super: :user:
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.