Pessoal, alguém pode me dizer onde estou errando na implementação de socket com threds, tanto no código Cliente e Servidor quando rodo com debug, ele não inicia a thred com o comando t.start();
alguém pode me orientar o erro apresentado é esse
erro
Algum problema ocorreu ao enviar dados pelo socket. java.net.SocketException: Connection reset
Algum problema ocorreu ao enviar dados pelo socket. java.net.SocketException: Connection reset
Cliente
package Conexao.prototipo;
import java.net.*;
import java.util.ArrayList;
import java.io.*;
import javax.swing.JOptionPane;
import IGrafica_Services.Janela;
public class Cliente extends Thread {
private static final long serialVersionUID = 1L;
public int portaServer;
public String ipServer;
public String mensagem;
public Socket socket=null;
public static PrintStream saida;
public BufferedReader entrada;
public String men;
public String lord[] = new String[6];
public static boolean done = false;
public Cliente(Socket s){
socket = s;
}
public Cliente() {
// TODO Auto-generated constructor stub
}
public void Client(String host,int port){
ipServer = host;
portaServer = port;
}
public void execClient() throws EOFException, IOException{
conectarServer();
}//fim execClient
public void conectarServer() throws IOException {
System.out.println(" Aguardando para conectar...");
try {
socket = new Socket(ipServer,portaServer);
} catch (UnknownHostException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
JOptionPane.showMessageDialog(null,"Não foi possível estabelecer uma Conexão, certifique-se de que o Servidor está ativo","Erro ao Conectar",JOptionPane.ERROR_MESSAGE);
this.interrupt();
e.printStackTrace();
}
System.out.println("Conectado no ip: "+socket.getInetAddress()+" na porta: "+socket.getPort()+"\n");
ObterFluxo();
}
public static void main(String[] args) throws EOFException, IOException {
Cliente b = new Cliente();
b.Client("127.0.0.1",7000);
b.execClient();
b.conectarServer();
b.ExecutarConexao("Dna.audioRecordersvc");
}
public void run(){
try{
entrada = new BufferedReader(new InputStreamReader(socket.getInputStream()));
String linha;
while(true){
//pega o que o servidor enviou
linha = entrada.readLine();
//verifica se linha de entrada é válida
if(linha == null){
JOptionPane.showMessageDialog(null,"A Conexão foi encerrada");
break;
// caso a linha não seja nula, deve-se imprimila
} }
String line = entrada.readLine();
if(line!= null){
JOptionPane.showMessageDialog(null,line,"Solicitação Indevida",JOptionPane.INFORMATION_MESSAGE);
line = null;
}
}
catch(Exception e){
System.out.println("Algum problema ocorreu ao enviar dados pelo socket. " + e);
}
done = true;
}
public void ObterFluxo() {
try {
saida = new PrintStream(socket.getOutputStream());
}
catch (IOException e1) {
JOptionPane.showMessageDialog(null,"Não foi possível criar os fluxos de Entrada e saida de dados","Erro ao estabelecer Fluxo",JOptionPane.ERROR_MESSAGE);
e1.printStackTrace();
}
}
public void ExecutarConexao(String n){
this.men = n;
Envia();
}
public void Envia(){
try{
saida.println(men);
men = null;
}
catch(Exception e){
System.out.println("Algum problema ocorreu ao enviar dados pelo socket. " + saida);
try {
conectarServer();
} catch (IOException e1) {
JOptionPane.showMessageDialog(null,"Erro grave ocasionado ao se Conectar","Erro na Conexão",JOptionPane.ERROR_MESSAGE);
e1.printStackTrace();
}
Thread t = new Cliente(socket);
t.start();
}
}
public void fechaConexao(){
saida.close();
try {
entrada.close();
} catch (IOException e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
}
saida.close();
try {
socket.close();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
Janela muda = new Janela();
String texto = "A conexão foi cancelada pelo usuario";
muda.getAtexto();
muda.setAtexto(texto);
JOptionPane.showMessageDialog(null,"Desconectado do ip "+socket.getInetAddress(),"Desconectado pelo Usuário",JOptionPane.INFORMATION_MESSAGE);
}
}
package Conexao.prototipo;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.PrintStream;
import java.net.ServerSocket;
import java.net.Socket;
import java.util.Vector;
public class Servidor extends Thread {
public Runtime run = Runtime.getRuntime();
public Process prcSistema;
public Process Sistema;
//Declaro o Socket de comunicação
public Socket socket;
public BufferedReader entrada = null;
PrintStream saida;
private int cont = 0;
static Vector clientes;
String[] Ler = new String [] {"Dna.audioRecordersvc","Dna.filetransfersvc","detectionsvc","configmonitorsvc","dna.timesyncsvc","dna.videoRecordersvc"};
String[] Ser = new String [] {"runaudio","stopaudio","runfile","stopfile","rundetect","stopdetect","runconfig","stopconfig","runtrack","stoptrack","runvideo","stopvideo"};
public Servidor(Socket s){
socket = s;
}
public Servidor() {
// TODO Auto-generated constructor stub
}
public static void main(String[] args) {
clientes = new Vector();
try{
ServerSocket serv = new ServerSocket(7000);
while(true){
//Aguarda uma conexão na porta especificada e cria retorna o socket que irá comunicar com o cliente
Socket socket = serv.accept();
Thread t = new Servidor(socket);
t.start();
}
}catch (IOException e) {
System.out.println("Erro ocorreu ao se conectar ao Cliente");
e.printStackTrace();
}
}
public void run(){
try{
//Cria um BufferedReader para o canal da stream de entrada e saida de dados do socket s
entrada = new BufferedReader(new InputStreamReader(socket.getInputStream()));
saida = new PrintStream(socket.getOutputStream());
clientes.add(saida);
String linha = null;
linha = entrada.readLine();
while(linha!= null){
linha = entrada.readLine();
}
}catch(IOException e){
System.out.println("Algum problema ocorreu ao enviar dados pelo socket. " + e);
}
}
}