ola pessoal…
eu desenvolvi um sistema em delphi q funciona como servidor fica escutando uma porta e comunicando…
os meus clientes nesse software se conectam de 2 a 3 vezes por minuto…
estou fazendo o mesmo sistema em java, mas n sei o q ta acontecendo… os clientes estão c conectando uma ves a cada 2 munitos!!!
ai vai mais ou menos o q eu fiz…tem algo errado? ou socket em java é ruim mesmo???
[code]import java.io.IOException;
import java.net.ServerSocket;
import java.net.Socket;
import org.jfree.experimental.data.xy.Vector;
/**
*
-
@author homisinho
*/
public class Principal {
public Conexao BD;
//Criamos o grupo das thread
ThreadGroup lista = new ThreadGroup(“Clientes”);////////////////////////////////////////////metodo principal//////
public Principal() {
try{
BD = new Conexao();
int cont_conex;
///cria uma query
Query Qry = new Query(BD.conn);
//Executando SQL:
Qry.open(“SELECT * FROM tabela”);
if(Qry.temalgo()){
Qry.close();
try {
// criando um socket que fica escutando a porta 2000.
ServerSocket s = new ServerSocket(2000,100);//porta de comunicação, numero
max de requisições na fila de escuta
while (true) {
//System.out.print(“Esperando alguem se conectar…”);
Socket conexao = s.accept();
conexao.setTcpNoDelay(true);
conexao.setSoTimeout(20000); ////espera 20000 pra passar no erro…
// cria uma nova thread para tratar essa conexão
cont_conex = lista.activeCount()+1;
new Thread(lista, new Servidor(conexao,cont_conex,BD)).start();
/{ Thread t = new Thread(lista, new Servidor(conexao,cont_conex,BD));
t.setName("Energ "+cont_conex);
t.start();}/
}
}
catch (IOException e) {
// caso ocorra alguma excessão de E/S, mostre qual foi.
System.out.println(“IOException: " + e);
}
}
else{
/////////////caso n tenha nenhum equipamento cadastrado abre uma tela////////
}
}
catch (Exception e){
System.out.println(“Problemas ao selecionar dados do BD.\n(”+e.toString()+”)");
}}
/////////////////////////////////////////////////////////////////
}
[/code]
na minha thread eu faço a comunicação de mais ou menos uns 200 bytes…e tem os closes pra finalizar
finally {
try {
entrada.close(); //buffer de entrada
saida.close(); //buffer de saida
conec.close(); //socket
} catch (IOException ex) {
ex.printStackTrace();
}
}