Olá! Estou tendo o meu primeiro contato com JAVA e com Sockets e estou tendo algumas dificuldades. Estou construindo um cliente socket que:
- Se conecta em um host
- Envia uma senha para autenticação
- Fica conectado esperando por mensagens (cada uma composta por 20 caracteres ascii)…
System.out.println("Início");
Socket socket = new Socket();
socket.setKeepAlive(true);
socket.connect(new InetSocketAddress(host,porta));
System.out.println("Conectado em " + socket.getRemoteSocketAddress());
DataOutputStream out = new DataOutputStream(socket.getOutputStream)
;
out.writeUTF(senha);
DataInputStream in = new DataInputStream(socket.getInputStream)
;
while (true){
String msg = in.readUTF()
;
System.out.println(msg);
}
Se eu coloco o host certo ele conecta, mas se eu coloco um host qualquer , ao invés de dar um erro, ele simplesmente fica em loop dentro do connect… Para mim é muito importante saber se estou conectada ou não porque terei que implementar algum método que caso o primeiro host caia conecte a um host alternativo.
A leitura não funciona da forma que está, dá o erro:
java.io.EOFException
at java.io.DataInputStream.readUnsignedShort(DataInputStream.java:323)
at java.io.DataInputStream.readUTF(DataInputStream.java:572)
at java.io.DataInputStream.readUTF(DataInputStream.java:547)
Eu deveria ter algum mecanismo que solicitasse a string e ficasse esperando, mas não sei o que poderia usar…
alguma dica? 