Seguinte, no construtor do cliente eu chamo o método conexão.
Segue o método:
public void conexao() throws IOException, UnknownHostException
{
Socket cliente = new Socket("127.0.0.1", 12345);
txtaHistoricoC.append("Nova conexão com o servidor\n");
}
Ao executar recebo a seguinte mensagem de erro:
SEVERE: null
java.net.ConnectException: Connection refused: connect
at java.net.PlainSocketImpl.socketConnect(Native Method)
at java.net.PlainSocketImpl.doConnect(PlainSocketImpl.java:333)
at java.net.PlainSocketImpl.connectToAddress(PlainSocketImpl.java:195)
at java.net.PlainSocketImpl.connect(PlainSocketImpl.java:182)
at java.net.SocksSocketImpl.connect(SocksSocketImpl.java:366)
at java.net.Socket.connect(Socket.java:529)
at java.net.Socket.connect(Socket.java:478)
at java.net.Socket.<init>(Socket.java:375)
at java.net.Socket.<init>(Socket.java:189)
at fontes.Cliente.conexao(Cliente.java:108)
at fontes.Cliente.<init>(Cliente.java:29)
at fontes.Cliente$2.run(Cliente.java:116)
at java.awt.event.InvocationEvent.dispatch(InvocationEvent.java:209)
at java.awt.EventQueue.dispatchEvent(EventQueue.java:597)
at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:269)
at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:184)
at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:174)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:169)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:161)
at java.awt.EventDispatchThread.run(EventDispatchThread.java:122)
Podem me dar help??
Pra vc conseguir conectar, é necessário ter alguém “ouvindo” nesse host e nessa porta.
Pro seu caso, ACHO que vc queria fazer apenas um teste, então antes de rodar essa sua classe, crie outra classe que suba um ServerSocket.
Essa classe ficaria mais ou menos assim:
public class Servidor {
public static void main(String[] args) {
new ServerSocket(12345);
}
}
Muito obrigada Lucas e riccaio, era justamente o que estava faltando…
Porém agora surgiu outro problema! Tanto o servidor quanto o cliente são codificados em um jframe, quando executo o servidor ele não aparece nada, não dá erro…Executo o cliente em seguida e aparece a telinha normalmente…
Segue o construtor do Servidor e o método que ele chama:
Sim, cada um em um jframe diferente…Fiz um teste agora (colocando em comentario :roll: ) e descobri que o problema é o while…Já haviam me mostrado que ele poderia entrar em um looping mesmo, agora q lembrei… Mas que outra condição posso colocar para que saia do laço corretamente?
Entendi, se eu parar o loop ele vai parar de aceitar os clientes ne?
Mas pq sera que não aparece o frame?
Se eu coloco assim:
while (!encerrar)
{
txtaConectados.append("oi");
encerrar = true;
}
A telinha aparece!
Mas se eu coloco assim:
while (!encerrar)
{
Socket cliente = servidor.accept();
txtaConectados.append("Nova conexão com o cliente " + cliente.getInetAddress().getHostAddress() + "\n");
encerrar = true;
}
Aí não aparece mais nada
Então a o frame não aparece se eu não encerrar o while e se eu colocar o “append” certo?
Acontece que enquanto vc naum parar o looping o processo esta preso nele…entaum a tela naum aparece…
qnd vc encerra o looping o processo continua e exibe o Frame…
ate da pra vc escrever em tela enquanto seu socket trabalha, mais dai vc vai ter q usar thread…
E essa thread, eu coloco no while mesmo? Eu estudei um exemplo em console que faz isso mesmo, coloca uma thread dentro do método que aguarda e aceita os clientes. Essa thread chama um outro método que lê o que o usuário digita no teclado e mostra a mensagem…
Mais simples em console, mas utilizando esses jframes eu devo tentar algo parecido?
Muito obrigada pela disposição em me ajudar :oops: