Subpage under development, new version coming soon!
Subject: Programação
voce tem que dar um dispose na frame, e não no servidor... frame.dispose()
Falando em Java, desculpa Eiro sou mais noob que você em Java e nao vou poder te ajudar, eu tava usando o BlueJ mas agora que pretendo começar um projeto "sério" quero usar uma IDE mais profissional, baixei o NetBeans por indicação de um amigo mas to apanhando pra caramba com ele nao consegui fazer muita coisa ainda. :(
eu coloco isso dentro do if?
se for pra tirar o if e o else como fica?
se for pra tirar o if e o else como fica?
e da aparecendo um erro no available
The method available() is undefined for the type Socket
The method available() is undefined for the type Socket
eu prefiro o netbeans, mas todo mundo diz que o eclipse é melhor :)
depois q excede o limite de conexões ele abre o Frame mesmo assim, a diferença é q nao consigo mandar nem receber, come q faz pra nao abrir o Frame e voltar pra parte de inserir a Porta?
coloca logo após você ver que o limite excedeu, ué :) onde fica isso no teu código?
coloca logo após você ver que o limite excedeu, ué :) onde fica isso no teu código?
e da aparecendo um erro no available
The method available() is undefined for the type Socket
errei. muda pra scktOrigem.getInputStream().available()
The method available() is undefined for the type Socket
errei. muda pra scktOrigem.getInputStream().available()
eiro, o heartbeat deu certo? ta removendo os sockets que desconectaram?
kra nao ta dando certo... continua nao diminuindo o nº de clientes quando fecha, continua abrindo o Frame depois q a conexão está esgotada...
e esse dispose nao deu certo tbm
Cannot make a static reference to the non-static method dispose() from the type Window
The method dispose() is undefined for the type Servidor
e meu codigo todo ta la atras
(edited)
e esse dispose nao deu certo tbm
Cannot make a static reference to the non-static method dispose() from the type Window
The method dispose() is undefined for the type Servidor
e meu codigo todo ta la atras
(edited)
tenta o seguinte trecho de codigo:
else
{
System.out.println("Capacidade de Conexões Esgotada.");
frame.dispose();
}
}
catch(Exception ex) {
System.out.println(ex);
System.exit(1);
}
}
}
else
{
System.out.println("Capacidade de Conexões Esgotada.");
frame.dispose();
}
}
catch(Exception ex) {
System.out.println(ex);
System.exit(1);
}
}
}
deixa eu entender. vc tem uma frame no cliente e você quer que ela pare de aparecer quando o servidor estiver cheio?
se for isso, você vai precisar implementar um mecanismo de troca de mensagem - antes de exibir a tela, vai ter que ter uma verificação do cliente para o servidor...
eu achava que aparecia uma frame no servidor para definir portas, etc...
se for isso, você vai precisar implementar um mecanismo de troca de mensagem - antes de exibir a tela, vai ter que ter uma verificação do cliente para o servidor...
eu achava que aparecia uma frame no servidor para definir portas, etc...
Eiro, acho que resolvi o problema da frame. Segue o novo Cliente:
----------------------------------------------
import java.net.*;
import java.io.*;
import javax.swing.JOptionPane;
public class Cliente extends Thread {
Socket socket;
PrintStream out;
FrameCliente frame;
// public static final int PORTA = 1024;
private int PORTA;
public static final String SERVIDOR = "localhost";
public Cliente() {
init();
}
public void init() {
this.PORTA = Integer.parseInt(JOptionPane.showInputDialog("Informe a Porta do Servidor"));
this.socket = new Socket();
frame = new FrameCliente(socket);
frame.setVisible(true);
try {
this.socket.connect(new InetSocketAddress(InetAddress.getByName(SERVIDOR), PORTA));
frame.getTxfArea().setText(frame.getTxfArea().getText() + " Sucesso!");
} catch (Exception ex) {
frame.getTxfArea().setText(frame.getTxfArea().getText() + " Erro!");
System.out.println(ex);
JOptionPane.showMessageDialog(null,"Maximo numero de conexões atingido!","Erro",JOptionPane.ERROR_MESSAGE);
frame.dispose();
init();
}
}
public void run() {
BufferedReader in;
String msg;
while (true) {
try {
if (socket.getInputStream().available() > 0) {
in = new BufferedReader(new InputStreamReader(socket
.getInputStream()));
msg = in.readLine();
frame.txfArea.append(msg + "\n");
}
} catch (Exception ex) {
System.out.println(ex);
}
try {
Thread.sleep(1000);
} catch (Exception ex) {
}
}
}
public static void main(String[] args) {
Cliente cliente = new Cliente();
cliente.start();
}
}
----------------------------------------------
import java.net.*;
import java.io.*;
import javax.swing.JOptionPane;
public class Cliente extends Thread {
Socket socket;
PrintStream out;
FrameCliente frame;
// public static final int PORTA = 1024;
private int PORTA;
public static final String SERVIDOR = "localhost";
public Cliente() {
init();
}
public void init() {
this.PORTA = Integer.parseInt(JOptionPane.showInputDialog("Informe a Porta do Servidor"));
this.socket = new Socket();
frame = new FrameCliente(socket);
frame.setVisible(true);
try {
this.socket.connect(new InetSocketAddress(InetAddress.getByName(SERVIDOR), PORTA));
frame.getTxfArea().setText(frame.getTxfArea().getText() + " Sucesso!");
} catch (Exception ex) {
frame.getTxfArea().setText(frame.getTxfArea().getText() + " Erro!");
System.out.println(ex);
JOptionPane.showMessageDialog(null,"Maximo numero de conexões atingido!","Erro",JOptionPane.ERROR_MESSAGE);
frame.dispose();
init();
}
}
public void run() {
BufferedReader in;
String msg;
while (true) {
try {
if (socket.getInputStream().available() > 0) {
in = new BufferedReader(new InputStreamReader(socket
.getInputStream()));
msg = in.readLine();
frame.txfArea.append(msg + "\n");
}
} catch (Exception ex) {
System.out.println(ex);
}
try {
Thread.sleep(1000);
} catch (Exception ex) {
}
}
}
public static void main(String[] args) {
Cliente cliente = new Cliente();
cliente.start();
}
}