Subpage under development, new version coming soon!
Subject: Programação
Ué, se eu contesto essas especificações no meu trabalho, por que não fazê-lo na escola ?
Eu bloqueei um projeto de 8 milhões de reais de uma empresa americana super-conhecida, exatamente porque não atendia a esta recomendação.
Queriam me matar, mas no final vieram me perguntar como fazia para contornar o problema.
A resposta é simples, sigam as recomendações.
Eu bloqueei um projeto de 8 milhões de reais de uma empresa americana super-conhecida, exatamente porque não atendia a esta recomendação.
Queriam me matar, mas no final vieram me perguntar como fazia para contornar o problema.
A resposta é simples, sigam as recomendações.
pelo simples fato de idealmente e provavelmente haver o seguinte cenário de testes:
. joão vai pegar o servidor dele, rodar no laboratório de graduação 1, na maquina 2, com uma porta de rede gerada a partir de 0.
. pedro, sem conversar com joão, vai ter que rodar o cliente no laboratorio de graduacao 2, na maquina 5, e se conectar ao servidor de joao sem saber qual a porta que joão escolheu.
. por não compartilharem as portas, não será possível fazer a conexão.
entenda que o que ele precisa gerar é um mini protocolo de conexão em socket. coisa do século passado. não dá pra complicar.
. joão vai pegar o servidor dele, rodar no laboratório de graduação 1, na maquina 2, com uma porta de rede gerada a partir de 0.
. pedro, sem conversar com joão, vai ter que rodar o cliente no laboratorio de graduacao 2, na maquina 5, e se conectar ao servidor de joao sem saber qual a porta que joão escolheu.
. por não compartilharem as portas, não será possível fazer a conexão.
entenda que o que ele precisa gerar é um mini protocolo de conexão em socket. coisa do século passado. não dá pra complicar.
rpz... pra dizer a verdade eu to viajando na maionese com essa discussão de vcs
esse negoço da porta é assim mesmo, do jeito q o prof. pediu, o servidor informa a porta que vai colocar e na hora de conectar o cliente tem que informar a porta correta, e isso no meu prog. ta dando certo, eu qro q vcs minha ajudem na codificação dos requisitos que o prof pediu q eu nao to sabendo, preciso de uma luz!!
como eu havia dito aquele lance das conexões esgotadas quando passava o numero de conexões, o if endoidava, e deixava encerrado o server..
no cliente, quando ele encerrar e fechar a janela, é pra diminuir o contador da lista de clientes conectados no servidor, e nao ta diminuindo, tem la na prog pra remover e nao remove
. Objetivos
• Este trabalho tem como objetivo a implementação de um programa distribuído de troca de mensagens (chat) baseado na interface sockets e com implementação em Java.
2. Requisitos
• O servidor e o cliente deverão permitir a parametrização da porta listener
• Servidor deverá permitir a parametrização do número máximo de clientes conectados
• Servidor deverá exibir o número atual de clientes conectados
• Servidor deverá manter um controle de identificação dos clientes conectados através de um apelido informado pelo cliente no momento da conexão
• Servidor não poderá permitir que dois clientes tenham o mesmo identificador (apelido)
• A cada cliente conectado / desconectado o servidor deverá enviar uma mensagem administrativa aos demais clientes informando o cliente que respectivamente se conectou ou desconectou
• Cliente deverá implementar interface gráfica que permita a exibição das mensagens recebidas, o envio de mensagens para todos os clientes (broadcast) ou para um cliente em particular
3. Opcionais
• A cada um dos opcionais implementados a equipe fará jus a 0,5 ponto de bonificação na nota final do trabalho. São estes os opcionais:
• Implementação de interface gráfica no servidor
• Parametrização do cliente / servidor através de arquivo de configuração
• Permitir ao servidor desconectar um determinado cliente conectado
• Interface gráfica do cliente implementando uma lista (combo-box) atualizada com todos os clientes conectados
esse negoço da porta é assim mesmo, do jeito q o prof. pediu, o servidor informa a porta que vai colocar e na hora de conectar o cliente tem que informar a porta correta, e isso no meu prog. ta dando certo, eu qro q vcs minha ajudem na codificação dos requisitos que o prof pediu q eu nao to sabendo, preciso de uma luz!!
como eu havia dito aquele lance das conexões esgotadas quando passava o numero de conexões, o if endoidava, e deixava encerrado o server..
no cliente, quando ele encerrar e fechar a janela, é pra diminuir o contador da lista de clientes conectados no servidor, e nao ta diminuindo, tem la na prog pra remover e nao remove
. Objetivos
• Este trabalho tem como objetivo a implementação de um programa distribuído de troca de mensagens (chat) baseado na interface sockets e com implementação em Java.
2. Requisitos
• O servidor e o cliente deverão permitir a parametrização da porta listener
• Servidor deverá permitir a parametrização do número máximo de clientes conectados
• Servidor deverá exibir o número atual de clientes conectados
• Servidor deverá manter um controle de identificação dos clientes conectados através de um apelido informado pelo cliente no momento da conexão
• Servidor não poderá permitir que dois clientes tenham o mesmo identificador (apelido)
• A cada cliente conectado / desconectado o servidor deverá enviar uma mensagem administrativa aos demais clientes informando o cliente que respectivamente se conectou ou desconectou
• Cliente deverá implementar interface gráfica que permita a exibição das mensagens recebidas, o envio de mensagens para todos os clientes (broadcast) ou para um cliente em particular
3. Opcionais
• A cada um dos opcionais implementados a equipe fará jus a 0,5 ponto de bonificação na nota final do trabalho. São estes os opcionais:
• Implementação de interface gráfica no servidor
• Parametrização do cliente / servidor através de arquivo de configuração
• Permitir ao servidor desconectar um determinado cliente conectado
• Interface gráfica do cliente implementando uma lista (combo-box) atualizada com todos os clientes conectados
adiciona isBound() na verificação:
if ( scktOrigem.isClosed() || !scktOrigem.isConnected() || !scktOrigem.isBound() )
vê se funciona... se não funfar, acho que vamos ter que implementar um heartbeat e lançar excessões...
if ( scktOrigem.isClosed() || !scktOrigem.isConnected() || !scktOrigem.isBound() )
vê se funciona... se não funfar, acho que vamos ter que implementar um heartbeat e lançar excessões...
while (true) {
itOrigem = listaClientes.iterator();
while (itOrigem.hasNext()) {
scktOrigem = itOrigem.next();
if ( scktOrigem.isClosed() || !scktOrigem.isConnected() || !scktOrigem.isBound() )
{
listaClientes.remove(scktOrigem);
this.totalClientes--;
System.out.println(totalClientes + " conectados");
}
assim? deu não..
sei lah acho q esse while ai nao ta dando certo
itOrigem = listaClientes.iterator();
while (itOrigem.hasNext()) {
scktOrigem = itOrigem.next();
if ( scktOrigem.isClosed() || !scktOrigem.isConnected() || !scktOrigem.isBound() )
{
listaClientes.remove(scktOrigem);
this.totalClientes--;
System.out.println(totalClientes + " conectados");
}
assim? deu não..
sei lah acho q esse while ai nao ta dando certo
if (totalClientes < this.NUMCLIENTE)
{
Socket socket = srvSocket.accept();
System.out.println("Conexao aceita de: " + socket.getInetAddress() + ":" + socket.getPort());
listaClientes.add(socket);
totalClientes++;
System.out.println(totalClientes + " conectados");
}
else
{
System.out.println("Capacidade de Conexões Esgotada.");
break; //não é isso
}
aqui eu não to sabendo oq colocar no else..
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?
{
Socket socket = srvSocket.accept();
System.out.println("Conexao aceita de: " + socket.getInetAddress() + ":" + socket.getPort());
listaClientes.add(socket);
totalClientes++;
System.out.println(totalClientes + " conectados");
}
else
{
System.out.println("Capacidade de Conexões Esgotada.");
break; //não é isso
}
aqui eu não to sabendo oq colocar no else..
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?
acho que vc pode dar um frame.dispose(); ... isso via fechar o frame (pode abrir e fechar em run time).
mas você vai precisar abrir algum outro frame?
mas você vai precisar abrir algum outro frame?
soh no caso de algum cliente fechar a janela, ai vai precisar abrir outro frame né quando outro cliente quiser se conectar
while (true) {
itOrigem = listaClientes.iterator();
while (itOrigem.hasNext()) {
scktOrigem = itOrigem.next();
if ( scktOrigem.isClosed() || !scktOrigem.isConnected() || !scktOrigem.isBound() )
{
listaClientes.remove(scktOrigem);
this.totalClientes--;
System.out.println(totalClientes + " conectados");
}
assim? deu não..
sei lah acho q esse while ai nao ta dando certo
o problema é o if... para o socket que morreu, provavelmente o if está retornando false. o que você vai precisar fazer aí é tentar fazer alguma operação com scktOrigem, com reader, e pegar a Exception...
(edited)
itOrigem = listaClientes.iterator();
while (itOrigem.hasNext()) {
scktOrigem = itOrigem.next();
if ( scktOrigem.isClosed() || !scktOrigem.isConnected() || !scktOrigem.isBound() )
{
listaClientes.remove(scktOrigem);
this.totalClientes--;
System.out.println(totalClientes + " conectados");
}
assim? deu não..
sei lah acho q esse while ai nao ta dando certo
o problema é o if... para o socket que morreu, provavelmente o if está retornando false. o que você vai precisar fazer aí é tentar fazer alguma operação com scktOrigem, com reader, e pegar a Exception...
(edited)
soh no caso de algum cliente fechar a janela, ai vai precisar abrir outro frame né quando outro cliente quiser se conectar
ai você dá um new na outra frame, logo após o dispose();
ai você dá um new na outra frame, logo após o dispose();
Dancei ontem na prova de programação =/
odeio essa materia igualmente o professor.....
odeio essa materia igualmente o professor.....
o método de frame é dispose(); sim... cola aqui o código que você botou e que não achou...
The method dispose() is undefined for the type Servidor
eiro, ve se funfa, para detectar que a socket fechou:
while (true) {
itOrigem = listaClientes.iterator();
while (itOrigem.hasNext()) {
scktOrigem = itOrigem.next();
try { //HEARTBEAT
scktOrigem.getInputStream().read(new byte[1],0,0);
for (;scktOrigem.available() >= 0;) {
}
} catch(IOException ex) { //socket fechada
listaClientes.remove(scktOrigem);
this.totalClientes--;
System.out.println(totalClientes + " conectados");
}
(edited)
while (true) {
itOrigem = listaClientes.iterator();
while (itOrigem.hasNext()) {
scktOrigem = itOrigem.next();
try { //HEARTBEAT
scktOrigem.getInputStream().read(new byte[1],0,0);
for (;scktOrigem.available() >= 0;) {
}
} catch(IOException ex) { //socket fechada
listaClientes.remove(scktOrigem);
this.totalClientes--;
System.out.println(totalClientes + " conectados");
}
(edited)
voce tem que dar um dispose na frame, e não no servidor... frame.dispose()