Bom dia gente.
Depois que o Viny me ajudou a fazer aquele chat funcionar, que agora esta funfando bem pakas ^^ , tenho algumas Dúvidas.
Vou tentar dividir bem elas, ja vou agradeçendo a ajuda!!! E logo logo, como agradecimento, libero o programa e todo o código , ok ?
Enfim,
Descobri que é possível o cliente ter mais de um socket ligado ao servidor.Em que isso é ùtil?
Por exemplo, se eu quiser colocar uma imagem pra cada usuário, eu deveria ter um socket separado pra nao sobrecarregar o socket de comunicação ou nao tem nada a ver,
porque eu posso usar synchronized e além disso, ninguem tem conexão discada ?
Mais uma pergunta,
Quando que se usa mais de um socket ?
Muito obrigado gente, o chat esta ficando bacana kkk
Ahh, gente , mais uma dúvida.
No cliente tem um método pra fechar o chat.
Eu fiz assim, esta correto ?
[code] public void closeClientChat() {
try {
socket.close();
} catch (IOException ex) {
logDebug.setErrorMessageToFile(ex.getStackTrace() + logDebug.getLineJump() + ex.getMessage());
Logger.getLogger(MainController.class.getName()).log(Level.SEVERE, null, ex);
}
}[/code]
o log Debug é uma classe que fiz pra guardar os bugs num txt
Você pode ter mais de um socket para permitir que mais de uma thread faça o download de coisas separadas ao mesmo tempo. Por exemplo, você poderia fazer o seu char baixar o avatar separadamente.
Ou então, usar mais de um socket para comunicar com mais de um servidor. Você poderia ter o chat para conversas e um servidor só de propagandas em outro endereço.
[quote=ViniGodoy]Você pode ter mais de um socket para permitir que mais de uma thread faça o download de coisas separadas ao mesmo tempo. Por exemplo, você poderia fazer o seu char baixar o avatar separadamente.
Ou então, usar mais de um socket para comunicar com mais de um servidor. Você poderia ter o chat para conversas e um servidor só de propagandas em outro endereço.[/quote]
Ah entendi, então assim. O socket, nao tem como sobrecarregar ele, né ?
O que você quer dizer com “sobrecarregar”?
Por exemplo,
Eu imagino que o socket seja um cano.
Esse cano tem certa capacidade…
Tipo, eu nao posso transferir 1000 L do lado A para o lado B. Mesmo que o lado A tenha capacidade de 2000 e o lado B também.
No caso a capacidade seria a velocidade de conexão.
Não sei se faz sentido pra voce.
Só se alguma coisa no meio estiver impondo artificialmente esse limite. Por exemplo, um proxy ou um roteador.
[quote=entanglement]Só se alguma coisa no meio estiver impondo artificialmente esse limite. Por exemplo, um proxy ou um roteador. [/quote]Ou a banda da internet!
Eu acho! >_<’’
A velocidade de conexão é uma característica física, independente da quantidade de sockets na máquina, ou mesmo de qual aplicação abriu o socket.
O socket seria mais como uma torneira, ligada na mesma tubulação, e essa tubulação representa literalmente as conexões partindo desde o cabo de rede da sua máquina, passando pela sua operadora te telefonia até o destino com quem está comunicando.
A thread como a pessoa que vai ali usar a torneira (não dá para 2 pessoas usarem a mesma torneira ao mesmo tempo, ainda que ela esteja ligada a mesma tubulação).
As conexões ainda tem 2 fatores. A velocidade que o dado trafega (equivalente a pressão da água, na nossa analogia hidráulica), e a banda, que é a quantidade de dados capaz de trafegar ao mesmo tempo (largura do cano).
Para um jogador de um game, é mais importante ter velocidade de tráfego do que largura de banda, pois um game tipicamente transmite várias pequenas mensagens de status. Já num torrent, a largura de banda costuma a ser mais interessante.
A combinação dos dois dá o que chamam de throughput, ou seja, a velocidade final da linha (a rigor, no throughput ainda é descontado a taxa de erro, ou seja, é a quantidade de dados que transmitiram corretamente num terminado intervalo de tempo).
Gente Obrigado pelas respostas.
Viny, imprimi seu post.
Tenho mais três dúvidas,s e possível
Primeiro :
O jeito que eu estou fechando a conexão do cliente esta correta?
Segundo:
//socket.setPerformancePreferences(0,1,2);
Qual deveria ser a prioridade no caso desse chat?
Terceiro :
Queria implementar Fontes , igual do MSN, no chat… Como poderia começar isso? Como eu devo Pensar?
Sim. Mas normalmente enviamos uma mensagem para o outro lado para avisar que estamos fechando. Caso contrário, pode levar muito tempo até que o outro lado perceba.
No caso de um chat, a preferência seria: 1,2,0. Mas isso não vai fazer lá muita diferença, pois ele não é crítico em nenhum desses pontos.
Você vai usar um JEditorPane. E aí é só trafegar um HTML ao invés de texto puro.
[quote=ViniGodoy]Sim. Mas normalmente enviamos uma mensagem para o outro lado para avisar que estamos fechando. Caso contrário, pode levar muito tempo até que o outro lado perceba.
No caso de um chat, a preferência seria: 1,2,0. Mas isso não vai fazer lá muita diferença, pois ele não é crítico em nenhum desses pontos.
Você vai usar um JEditorPane. E aí é só trafegar um HTML ao invés de texto puro.[/quote]
Entendi.
Vou implementar um método para fechar.
Vou colocar a preferencia em 1,2,0 para o servidor e o chat.
Mas sobre o HTML…
COMO ASSIM???
omg!!
O que vc quer dizer com fontes? Seria deixar o pessoal alterar a fonte do texto, certo? E usar formatação?
O JEditorPane renderiza HTML. Então, ao invés de mandar uma mensagem de texto plana, vc poderia mandar algo como
Olá <b>Enfermeira!</b>
E aí o Enfermeira vai sair em negrito.
[quote=ViniGodoy]O que vc quer dizer com fontes? Seria deixar o pessoal alterar a fonte do texto, certo? E usar formatação?
O JEditorPane renderiza HTML. Então, ao invés de mandar uma mensagem de texto plana, vc poderia mandar algo como
Olá <b>Enfermeira!</b>
E aí o Enfermeira vai sair em negrito.
[/quote]
Valeu viny!
Po que fácil! Achei que eu teria que mandar um arquivo HTML lol
Tudo bem. Vou terminar de arrumar essa versão do chat e fazer uma cópia dela pra fazer isso aí