Galera, minha dúvida é o seguinte: Eu estou desenvolvendo um chat (mas já tive a mesma dúvida em outras situações), o Client precisa receber infomações aleatórias como por exemplo um usuário que entrou no sistema, o Client precisa receber a notificação que aquele usuário entrou para ele saber que este está disponível para o chat. Ai minha dúvida é a seguinte, eu devo utilizar uma thread que fica responsável por receber mensagens do servidor? (Assim como a do servidor que sempre espera uma mensagem de um client). Ou é melhor fazer um esquema de a cada X segundos o client solicita atualizações do servidor?
Na primeira abordagem eu fico com o seguinte problema: Ao abrir o thread, tudo terá que passar por ele, pois se eu “esperar” mensagens em outro local, irá dar conflito, pois terá 2 sockets esperando mensagens do mesmo endereço e porta.
Na segunda abordagem eu fico com o seguinte problema: As informações não serão sincronizadas da forma correta (ao meu ver), pois o client que precisará fazer a solicitação de forma periódica.
Além destes problemas, gostaria de tirar uma dúvida sobre Multicast. O chat que estou implementando utilizará o multicast e segundo os testes que fiz o endereço “224.0.0.0” já difere do “224.0.0.1”, ou seja cada acréscimo já me da um grupo multicast diferente, correto? Como eu posso manter uma estrutura para saber quais endereços eu possuo disponíveis? Pensei numa HashMap, porém quando um endereço for liberado, como obtê-lo de novo para “dar” a outro client, tendo em vista que pretendia fazer ele crescente. O primeiro Client recebe 224.0.0.0, o segundo 224.0.0.1 e etc.
Muito obrigado a todos que poderem dar qualquer tipo de ajuda!