Sockets(algumas dúvidas)

Bem eu criei com a ajuda de uma apostila um servidor e um cliente mas ainda tenho algumas dúvidas, que são :

Na hora do servidor escutar a porta ele tipo fica travado até um cliente se conectar para que isso não aconteça eu teria que usar threads?

Quando o cliente tentar se conectar ao servidor como eu faria para saber se ele se conectou ou nao ao servidor(Para que eu possa ficar tentando por um tempo ou retornar uma msg ao usuário)? Porque isso é feito pelo construtor…tem alguma função que eu possa usar pra saber isso? tipo :

bool GetClientStatus(){return conectado};

(Retorna se está ou não conectado) e se tem como saber a causa da falha(Internet ou servidor inativo).

Agradeço a quem puder ajudar.
=]

Sim.
Ou Selectors (que fazem parte do java.nio), mas fique com as threads por enquanto para não confundir sua cabeça.

Se socket for construído, então é porque conectou. Caso contrário, vai lançar uma IOException.
Então, use um try…catch.

Depende.
Se for uma interrupção no serviço de internet, a exceção lançada será diferente da de servidor inativo.
Entretanto, se for só internet lenta, aí para o cliente parecerá um servidor inativo.

Hmm…valeu pela ajuda cara me ajudou bastante…
=]