Есть 2 способа проверить, подключен ли сокет, вы можете либо прочитать, либо записать в него, если он подключен, вы не получите ошибку, если он не подключен, вы получите ошибку. Вот как я проверяю, подключен ли сокет:
BufferedReader reader;
public void run()
{
try
{
String message;
while((message = reader.readLine())!=null) //The thread stops here untill the reader has somthing to read
{
System.out.println(message);
}
}catch(Exception e)
{
System.out.println("Client disconnected!");
// an error is thrown when reader cannot read the stream because it is closed, you will get a connection reset error.
}
}
Когда сокет подключен, читатель ждет, пока что-то будет прочитано (message = reader.readLine ()). Когда клиент отключается и Socket закрывается, считыватель выдает исключение, потому что нет ничего, что можно прочитать, потому что поток закрыт. Надеюсь, это поможет!