Impedir que se abra o aplicativo que já estyiver em execução

MP

[quote]
Olá

Esquece, isto tem dono. Eu apenas participei do projeto, publiquei por minha conte e risco. Só participei da idéia e não fui eu que escrevi o código (que pode ser melhorado). E além disso é apenas uma classe, não pode ser considerada uma API.

Se quiser usar tudo bem porque a idéia eu já tinha exposto desde meu primeiro post na thread, mas passar para a frente como uma API não faz sentido.

[]s
Luca [/quote]

Como falei, naum usei nada do fonte q ele passou, nada mesmo. Tanto eh q naum tem o problema de abrir o serverSocket, fechar e abrir denovo… como disse, usei a ideia, mas nada de fonte.

Tava querendo ajudar, mas jah q o problema tah sendo grande vou tirar do ar.

VELO

Olá

Eu passei a ideía do serversocket de forma clara e ninguém fez fé. Eu insisti na idéia e aí uns poucos acreditaram. Eu coloquei o código em retribuição ao CV que acreditou e porque que ele é um cara que já ajudou muita gente aqui. Mas deixei nas mensagens que o código não era meu e que eu só participei das idéias para confecção. E idéias são mais importantes do como as variáveis são denominadas.

Precisava publicar? Eu não disse claramente para você usar privadamente?

[]s
Luca

Olá

Obrigado

[]s
Luca

[quote=Luca]Olá

Eu passei a ideía do serversocket de forma clara e ninguém fez fé. Eu insisti na idéia e aí uns poucos acreditaram. Eu coloquei o código em retribuição ao CV que acreditou e porque que ele é um cara que já ajudou muita gente aqui. Mas deixei nas mensagens que o código não era meu e que eu só participei das idéias para confecção. E idéias são mais importantes do como as variáveis são denominadas.

Precisava publicar? Eu não disse claramente para você usar privadamente?

[]s
Luca[/quote]

Blz, jah apaguei o link sem publicidade naum evolui… mas dah um look no codigo, c vai ver, naum tem nada a ver.

Bah… tópico antigo que me quebrou o maior galho.

E realmente a solução funciona.

Até. :thumbup:

Concordo, tópico muito bom, me tireou muitas dúvidas, ajudou bastante!!!

abraço galera!

Me basiei pra fazer uma rotina que checa se o firebird está rodando ou não…

[code]public class fbcheck {

public static void main(String[] args) {

boolean runing = false;
try
{
ServerSocket ss = new ServerSocket(3050);
ss.close();
} catch (Exception e){runing = true;}

if (runing) JOptionPane.showMessageDialog(null,  "firebird rodando");
else JOptionPane.showMessageDialog(null,  "firebird parado");
}

}[/code]

to escrevendo pra dizer q por ServerSocket não funcionou comigo. rsrsrs

[quote=bruxel]to escrevendo pra dizer q por ServerSocket não funcionou comigo. rsrsrs
[/quote]
:shock: Como? Houve algum erro? tentou debugar pra ver o comportamento?

procurei por erros, porem simplesmente passa, desabilitei o firewall, mas nada

Poste o código onde você abre a porta (lembre-se que esse objeto que abre a porta deve existir enquanto a aplicação existir).

        boolean runing = false;

        try
        {
            ServerSocket ss = new ServerSocket( 3050 );
        }

        catch ( Exception e )
        {
            runing = true;
        }

        if ( runing )
        {
            JOptionPane.showMessageDialog( null, "sistema ja esta rodando" );
        }

        else
        {
            JOptionPane.showMessageDialog( null, "abrindo sistema" );
        }

alguma ideia dreampeppers99

try { ServerSocket ss = new ServerSocket( 3050 ); }

Talvez tenha haver com o ciclo de vida dessa “variavel local”! Continuo pensando que pra funcionar ss deveria ser um atributo de uma classe que não tem seu ciclo de vida interrompido durante a execução do sistema. Caso contrário o “servidor” é finalizado pelo GC e a porta fica livro para o SO fechá-la.
Sacou?

Tente criar algo assim:

[code]public class Locker{
private static ServerSocket ss;

public void teste(){
boolean runing = false;
try
{
ss = new ServerSocket( 3050 );
}

    catch ( Exception e )
    {
        runing = true;
    }

    if ( runing )
    {
        JOptionPane.showMessageDialog( null, "sistema ja esta rodando" );
    }
    else
    {
        JOptionPane.showMessageDialog( null, "abrindo sistema" );
    }

}

}
[/code]

Acho que você esqueceu de fechar a porta…

ss.close();

Por isso não está estourando a excessão, aí “runing” não fica verdadeiro…

valeu dreampeppers99,

era isto mesmo

[quote=ferrarezi]Acho que você esqueceu de fechar a porta…

ss.close();

Por isso não está estourando a excessão, aí “runing” não fica verdadeiro…[/quote]

não posso fechar a conexão senão o sistema fecha a porta, e ai sim sempre vou ter a porta liberada