Uma classe atrapalha a outra??  XML
Índice dos Fóruns » Java Básico
Autor Mensagem
thiagofesta
JavaGuru
[Avatar]

Membro desde: 19/12/2007 10:42:11
Mensagens: 233
Offline

Com certeza absoluta esta rodando dois sockets servers ao mesmo tempo e na mesma porta.

Por exemplo, abri um socket server na porta 1234, e depois tento abrir novamente, irá dar este erro.
Verifique isto!

Abraço!

"É melhor calar-se e deixar que as pessoas pensem que você é tolo, do que falar e acabar com a dúvida"
Abraham Lincoln
[WWW] [Yahoo!] [MSN]
thiagofesta
JavaGuru
[Avatar]

Membro desde: 19/12/2007 10:42:11
Mensagens: 233
Offline

Mais um detalhe, se estiver rodando em maquina local, ou rede local não é necessário abrir portas.
Caso seja rede local, libere no firewall, mas é difícil de bloquear, e se estiver bloqueando não será esse erro que irá exibir, ele apenas não irá conectar.

"É melhor calar-se e deixar que as pessoas pensem que você é tolo, do que falar e acabar com a dúvida"
Abraham Lincoln
[WWW] [Yahoo!] [MSN]
ericmaicon
Entusiasta Java

Membro desde: 15/12/2008 08:58:42
Mensagens: 23
Localização: Goiânia
Offline

então...só se o próprio programa..a própria chamada o chama 2x...

e está sem firewall!! eu retirei o firewall para rodar em rede local!!

pode ser erro na classe?
[WWW] [MSN]
thiagofesta
JavaGuru
[Avatar]

Membro desde: 19/12/2007 10:42:11
Mensagens: 233
Offline

ericmaicon wrote:então...só se o próprio programa..a própria chamada o chama 2x...

e está sem firewall!! eu retirei o firewall para rodar em rede local!!

pode ser erro na classe?


Acredito que sim, não cheguei a ver ela, mas depois vou dar uma olhada.

"É melhor calar-se e deixar que as pessoas pensem que você é tolo, do que falar e acabar com a dúvida"
Abraham Lincoln
[WWW] [Yahoo!] [MSN]
ericmaicon
Entusiasta Java

Membro desde: 15/12/2008 08:58:42
Mensagens: 23
Localização: Goiânia
Offline


eu mudei para isso!!

e meu programa trava qd chama!!
[WWW] [MSN]
marcobiscaro2112
JWizard

Membro desde: 01/12/2008 11:56:04
Mensagens: 2408
Localização: São Paulo - SP
Offline

Será que você realmente precisa abrir várias portas diferentes? Em um servidor HTTP, por exemplo, a porta padrão aberta é a 80. Quando um cliente se conecta a essa porta, é automaticamente transferido para outra porta, deixando a 80 livre para o próximo cliente.

Acho que deve ter apenas 1 ServerSocket aberto e quando você clicar no botão Parar, essa porta deve ser fechada (isso você ainda precisa fazer, criar um método fechaConexao, por exemplo). Quando à sua classe, procure, quando possível, implementar a interface Runnable, a estender Thread (e na verdade, a classe como está, nem precisava ser um Thread).

O erro deve acontecer pois a porta continua aberta, mesmo se a aplicação terminar, e quando você executa novamente, ele informa que a JVM já está utilizando a porta (não tenho certeza disso, se alguém souber um motivo diferente, me corrijam). Tente reiniciar sua IDE se isso acontecer.

Marco Biscaro.

Seja livre!

Você sabia que provavelmente há milhares de arquivos duplicados no seu computador?

Ei... você está usando DefaultTableModel no seu projeto?? Não faça isso! Veja: http://www.guj.com.br/posts/list/15/199067.java#1001295
[Email] [WWW] [MSN]
thiagofesta
JavaGuru
[Avatar]

Membro desde: 19/12/2007 10:42:11
Mensagens: 233
Offline

marcobiscaro2112:
Você tem razão, está é a idéia...


Melhorando:
ter um socket server, a onde você irá dar um new SocketServer, ai depois você faz um método, ou logo depois que irá aguardar conexões, quando achar uma conexão ai cria uma thread, ou seja cada cara conectado vai ser uma thread.
Seria algo assim:


Isto foi uma idéia!
Espero ter ajudado!

This message was edited 2 times. Last update was at 07/01/2009 13:53:11


"É melhor calar-se e deixar que as pessoas pensem que você é tolo, do que falar e acabar com a dúvida"
Abraham Lincoln
[WWW] [Yahoo!] [MSN]
marcobiscaro2112
JWizard

Membro desde: 01/12/2008 11:56:04
Mensagens: 2408
Localização: São Paulo - SP
Offline

Pelo que pude ver, ericmaicon tem um JFrame para controlar o servidor. Para evitar que a mesma porta seja aberta várias vezes, você deve alterar o estado dos JButton, através da propriedade setEnabled(). Ou seja, se o servidor estiver ligado, o botão "Iniciar" deve ser setado como setEnabled(false) e o "Parar" como setEnabled(true). Se o servidor estiver parado, deve ser feito o contrário.

thiagofesta wrote:Melhorando:
ter um socket server, a onde você irá dar um new SocketServer, ai depois você faz um método, ou logo depois que irá aguardar conexões, quando achar uma conexão ai cria uma thread, ou seja cada cara conectado vai ser uma thread.

Exatamente! É essa a grande idéia, o que vai mudar será a condição do while, pois deve verificar se o servidor está ligado ou não (isso inclui os eventos dos botões).

Marco Biscaro.

Seja livre!

Você sabia que provavelmente há milhares de arquivos duplicados no seu computador?

Ei... você está usando DefaultTableModel no seu projeto?? Não faça isso! Veja: http://www.guj.com.br/posts/list/15/199067.java#1001295
[Email] [WWW] [MSN]
fantomas
GUJ Master
[Avatar]

Membro desde: 24/04/2008 16:10:55
Mensagens: 1534
Localização: Terra (maior parte do tempo)
Offline

Minha hipótese sobre o seu problema é a seguinte:


Logo quando este trecho de código começa a ser processado é criado o socket (server) na porta 4444, logo depois é executado o método GetConnection(), que por sua vez, tenta abrir o socket (server) de novo (executa o getSocketInterno). Veja abaixo:


Como a variável internalSocket está nula o erro é ocorre (new Sockets() é executado novamente).

Talvez se você fizer assim a coisa melhore:



P.S O código está um pouco confuso, e fora do padrão como já foi dito; sei q vc está aprendendo mas se vc não der um jeito nisso agora vc vai começar a achar sua bagunça organizada e vai ficar mais difícil de melhorar, ou seja, o quanto antes MELHOR. Geralmente o que dificulta a encontrar os problemas são justamente a falta de organização, padronização, legibilidade etc... deveriam ser as primeiras coisas a serem aprendidas. Mais uma coisa, threads são consideradas tópico avançado portando dê uma atenção especial a este assunto, estude/leia mais.

Bons estudos!

flws
 
Índice dos Fóruns » Java Básico
Ir para:   
Powered by JForum 2.1.8 © JForum Team