Ola pessoal, estou implementando uma aplicação socket, já dei uma boa pesquisada mas não consegui encontrar uma solução, por isso resolvi pedir um help, meu caso é o seguinte:
A minha aplicação funciona apenas como cliente, utilizo threads para dar start em cada cliente, pois cada um se conecta a um servidor diferente, o problema é que não consigo fazer um controle mais exato por threads executada, pois listo os servidores de uma base de dados, cada IP um servidor, cada cliente novo conecta com um servidor diferente, não consegui utilizar uma maneira de instanciar a classe socket dando nomes a elas sendo seus respectivos ips de conexao, teria alguma forma de fazer isso?
Segue abaixo o metodo startCliet para vcs conferirem…
private void startClient(){
if (jchkConexao.isSelected()) {
try {
conConexao();
conn = DriverManager.getConnection("jdbc:firebirdsql://" + host + "/" + caminho, propBanco);
String query = "SELECT dis_codigo,dis_sigla, dis_ip, dis_tipo from ace_dispositivo where dis_status = 1 order by dis_ip";
PreparedStatement stmt = conn.prepareStatement(query);
ResultSet rs = stmt.executeQuery(query);
while (rs.next()) {
ClientSocket client = new ClientSocket(
rs.getString(3), rs.getString(1), rs.getString(4), rs.getString(2));
client.start();
}
conn.close();
} catch (IOException | ClassNotFoundException | SQLException ex) {
logSalv.SalvarLog(logErro, ex, true, "jchkConexao || Classe- FrmConecta");
}
} else if (jchkConexao.isSelected() == false) {
jlbStatus.setText("Agente Parado!");
jchkConexao.setText("Iniciar");
jlbStatus.setForeground(Color.red);
jtaConectMessage.setText("");
}
}
Na classe ClientSocket acontece todo o resto, recebe um comando do servidor, processa e devolve uma mensagem conforme o resultado do processamento, porem, como se trata do cliente, se perder a comunicação de alguma forma, a thread continua rodando, não dando nenhum erro, como se ainda estivesse conectado, pra resolver isso tentei um keep_alive, porem não tenho controle do tratamento do recebimento do servidor, ou ele recebe a ou b, e isto é o comando final, n tem como reconhecer uma mensagem em especifico e saber se é apenas um keep_alive, entao pensei em dar nomes as threads para poder realizar o controle em restarte de conexao a cada determinado periodo, alguem pode dar um help?