ae gente estou precisando de ajuda aq estou aprendendo sobre sockets agora e minha professora me deu uma tarefa pra fazer ela me passou um codigo cliente/servidor para que eu implementa-se, blz o que acontece e o seguinte se eu rodar esses codigos no console ele funciona direito envia varias mensagem do console do cliente para o servidor so que quando eu crie uma janela no swing
e fiz o metodo para pegar a mensagem do textArea ele so envia uma mensagem nao consigo enviar +, quando eu fecho essa janela aparece o erro
SocketException: conncetion reset
no servidor
por favor se alguem puder me ajudar agradeço
package Servidor;
import java.io.EOFException;
import java.io.IOException;
import java.io.ObjectInputStream;
import java.io.ObjectOutputStream;
import java.net.ServerSocket;
import java.net.Socket;
import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;
import javax.swing.JOptionPane;
/**
*
* @author Romario
*/
public class ServidorMSN implements Runnable {
private ServerSocket servidor;
private Socket conexao;
private int count = 1;
private ObjectOutputStream output;
private ObjectInputStream input;
String threadName;
private static ExecutorService executaThread = Executors.newFixedThreadPool(1);
// metodo construtor do servidor
public ServidorMSN(int porta, int fila, String nome) {
try {
threadName = nome;
servidor = new ServerSocket(porta, fila);
} catch (Exception ex) {
JOptionPane.showMessageDialog(null, "Erro de conexao com o cliente" + ex.toString());
ex.printStackTrace();
}
}
/***************************************************************************************
* Efetua o tratamento para deixar o cliente conectado com o servidor *
**************************************************************************************/
/***************************************************************************************
* Runnable tem apenas um metodo a implementar: public void run () (sem argumentos)
* e ai que iserira a tarefa que o segmento deve executar.esse é o metodo que entrara
* no final da pilha
**************************************************************************************/
public void run() {
System.out.printf("thread %s start ...\n", this.threadName);
try {
while (true) {
//Passo 2: Espera uma conexao
System.out.println("\nEsperando Conexão...\n");
conexao = servidor.accept();
System.out.println("\nConexão " + count + " recebido de: " + conexao.getInetAddress().getHostName());
//Passo 3: obtendo os fluxos de entrada e saída
input = new ObjectInputStream(conexao.getInputStream());
output = new ObjectOutputStream(conexao.getOutputStream());
output.flush();
// input = new ObjectInputStream(conexao.getInputStream());
System.out.println("\n Pegando streams de entrada e saída\n");
//Passo 4: Processando conexão com cliente
try {
String menssage = "";
while ((menssage = (String) input.readObject()) != null) {
try {
output.writeObject(menssage);
output.flush();
System.out.println(menssage);
} catch (Exception e) {
System.out.println("\n Objeto recebido desconhecido - ERRO!!");
e.printStackTrace();
}
}
//Passo 5: Fecha a conexão
// System.out.println("\n FIM DE CONEXÃO COM CLIENTE " + conexao.getInetAddress().getHostName());
// ++count;
} catch (ClassNotFoundException ex) {
ex.printStackTrace();
}
}
} catch (EOFException eof) {
System.out.println("\nFim da conexão com cliente\n");
eof.printStackTrace();
} catch (IOException io) {
io.printStackTrace();
} finally {
try {
output.close();
input.close();
conexao.close();
Thread.interrupted();
} catch (Exception e) {
e.printStackTrace();
}
}
}
/********************************************************************************
* Método utilizado para o envio de mensagem para um servidor *
*******************************************************************************/
public static void main(String[] args) {
ServidorMSN s = new ServidorMSN(5000, 100, "Servidor teste");
executaThread.execute(s);
}
}