Testar se socket está conectado

Olá pessoal.

Seguinte…

Tenho uma app mobile que roda em aparelhos Nextel.
Por causa da Nextel só oferecer IP NAT aos aparelhos e eu não querer gastar com SMS
para acordar as aplicações pelo PushRegistry…

A seguinte situação…

Tenho um Servidor de aplicações em Delphi… Que é meu servidor socket…
O mobile, ao iniciar, se registra nesse servidor socket e fica aguardando mensagens dele!

Ou seja, “emulei” um falso PushRegistry…

public void regitrarClientSocket() throws IOException{
sc = (SocketConnection) Connector.open(“socket://IpDoServidorSocket:40000”);
sc.setSocketOption(SocketConnection.LINGER, 5);

  is = sc.openInputStream();
  os = sc.openOutputStream();
  os.write(LoginUsuario.getBytes());

}

public class escutarSocket extends Thread {
public void run(){ int ch = 0;
while(ch != -1) {
try {
ch = is.read();
} catch (IOException ex) {
ex.printStackTrace();
}
resumeRequest();
startApp();
msg(“Algo vindo da web”);
display.setCurrent(formMaim);
}
}
}

e no StartApp() tenho

if(!ConectadoAoServidor){
try {
regitrarClientSocket();
ConectadoAoServidor = true;
} catch (IOException ex) {
ex.printStackTrace();
}
}
//Verificar a cada X minutos se usuário está conectado
escutarSocket doIt = new escutarSocket();
Thread myThread = new Thread( doIt );
myThread.start();

Mas tenho uma dúvida… A conexão do servidor ou do celular pode cair…
Então vou criar um timer que verifica de tempos em tempos se o socket ainda está conectado…
Ai está a questão…

Como faço para saber se esse cliente socket Sc que criei, ainda está conectado.
Qual metodo utilizar?

teria algum sc.IsConected() ???/

valew!

Que eu saiba Socket em CLDC não possui essa verificação.

Tenta dar um:

writeInt(1);

e no cliente um

int e = readInt();
if (e == 1){
    sout("conectado!");
}

Acho que é o jeito mais garantido de saber se a conexão ainda esta aberta.