Então pessoal, estou vendo Socket´s e não estou conseguindo fazer rodar o tal socket ae…
Erro:
java.net.SocketException: Connection reset
at java.net.SocketInputStream.read(SocketInputStream.java:168)
at java.net.SocketInputStream.read(SocketInputStream.java:182)
at java.io.DataInputStream.readLine(DataInputStream.java:496)
at br.com.sovis.servidor.ComunicacaoSocket.comunicacao(ComunicacaoSocket.java:51)
at br.com.sovis.servidor.ComunicacaoSocket.run(ComunicacaoSocket.java:36)
at br.com.sovis.servidor.ServidorSocket.start(ServidorSocket.java:38)
at serversocket.Main.main(Main.java:24)
[code]public class ServidorSocket {
private ServerSocket serverSocket = null;
private Socket socket = null;
private ComunicacaoSocket comunicacao = null;
private ConfiguracaoServerSocket configuracao = null;
public ServidorSocket (ConfiguracaoServerSocket configuracao) {
this.configuracao = configuracao;
}
public void start() {
try {
serverSocket = new ServerSocket(configuracao.getPorta());
System.out.println("Aguardando Conexão... [" + configuracao.getPorta() + "]");
while (true) {
socket = serverSocket.accept();
System.out.println("Conectado a: " + socket.getInetAddress().getHostAddress());
comunicacao = new ComunicacaoSocket(socket);
comunicacao.run();
//accept a connection ;
//create a thread to deal with the client ;
}
} catch (IOException ex) {
Logger.getLogger(ServidorSocket.class.getName()).log(Level.SEVERE, null, ex);
}
}
public void stop() {
try {
socket.close();
serverSocket.close();
socket = null;
serverSocket = null;
} catch (IOException ex) {
Logger.getLogger(ServidorSocket.class.getName()).log(Level.SEVERE, null, ex);
}
}
}[/code]
[code]public class ComunicacaoSocket extends Thread {
private DataInputStream input = null;
private DataOutputStream output = null;
private Socket socket = null;
private String mensagem = "";
public ComunicacaoSocket(Socket socket) {
this.socket = socket;
}
@Override
public void run() {
try {
input = new DataInputStream(socket.getInputStream());
output = new DataOutputStream(socket.getOutputStream());
comunicacao();
System.out.println("Descontado de: " + socket.getInetAddress().getHostAddress());
output.close();
input.close();
socket.close();
} catch (IOException ex) {
Logger.getLogger(ComunicacaoSocket.class.getName()).log(Level.SEVERE, null, ex);
}
}
public void comunicacao() throws IOException{
while (true) {
mensagem = "";
mensagem = input.readLine();
System.out.println("Recebeu: " + mensagem);
}
//TODO: Verificar Possibilidade de retornar alguma mensagem para o Cliente
}
}[/code]
[code]public class ClienteSocket {
public static void main(String[] args) {
Socket socket = null;
PrintWriter out = null;
BufferedReader in = null;
try {
socket = new Socket("localhost", 90);
out = new PrintWriter(socket.getOutputStream());
//in = new BufferedReader(new InputStreamReader(socket.getInputStream()));
out.write("Enviando Dados...");
} catch (UnknownHostException ex) {
Logger.getLogger(ClienteSocket.class.getName()).log(Level.SEVERE, null, ex);
} catch (IOException ex) {
Logger.getLogger(ClienteSocket.class.getName()).log(Level.SEVERE, null, ex);
}
}
}[/code]
Alguma coisa simples que não estou percebendo?!?!?!
Agora esta dando o seguinte erro, e estou lendo a mensagem do meu CLIENTE!
java.io.EOFException
at java.io.DataInputStream.readUnsignedShort(DataInputStream.java:323)
at java.io.ObjectInputStream$BlockDataInputStream.readUnsignedShort(ObjectInputStream.java:2764)
at java.io.ObjectInputStream$BlockDataInputStream.readUTF(ObjectInputStream.java:2820)
at java.io.ObjectInputStream.readUTF(ObjectInputStream.java:1051)
at br.com.sovis.servidor.ComunicacaoSocket.comunicacao(ComunicacaoSocket.java:51)
at br.com.sovis.servidor.ComunicacaoSocket.run(ComunicacaoSocket.java:37)
at br.com.sovis.servidor.ServidorSocket.start(ServidorSocket.java:39)
at serversocket.Main.main(Main.java:24)
Linha do erro .04:
public void comunicacao() throws IOException{
while (true) {
mensagem = "";
mensagem = input.readUTF();
System.out.println("Recebeu: " + mensagem);
}
//TODO: Verificar Possibilidade de retornar alguma mensagem para o Cliente
}
Bem segui o tutorial da SUn… peguei outro agora e da tudo na mesma!
Mudei o Stream de Saida e começou a receber de boa a mensagem… porém, continua dando Exception!
Outro detalhe… fiz novos testes e descobri que ta ocorrendo o seguinte…
O meu CLIENTE faz:
ObjectOutputStream output = new ObjectOutputStream
(socket.getOutputStream());
e dai no server para, e dá isso:
SEVERE: null
java.net.SocketException: Connection reset
at java.net.SocketInputStream.read(SocketInputStream.java:168)
at java.io.ObjectInputStream$PeekInputStream.read(ObjectInputStream.java:2266)
at java.io.ObjectInputStream$PeekInputStream.readFully(ObjectInputStream.java:2279)
at java.io.ObjectInputStream$BlockDataInputStream.readShort(ObjectInputStream.java:2750)
at java.io.ObjectInputStream.readStreamHeader(ObjectInputStream.java:780)
at java.io.ObjectInputStream.<init>(ObjectInputStream.java:280)
at br.com.sovis.servidor.t1.Servidor.iniciarServidor(Servidor.java:35)
at br.com.sovis.servidor.t1.Servidor.main(Servidor.java:53)