1 / 13

Programa Chat Programação com RMI

Programa Chat Programação com RMI. Programa Chat. Este programa pretende permitir a conversa entre vários clientes, em computadores diferentes Suporta múltiplas janelas de chat É constituído por dois programas separados:

keefe-allen
Download Presentation

Programa Chat Programação com RMI

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Programa Chat Programação com RMI

  2. Programa Chat • Este programa pretende permitir a conversa entre vários clientes, em computadores diferentes • Suporta múltiplas janelas de chat • É constituído por dois programas separados: • O servidor, contem os métodos para fazer a gestão da lista de utilizadores ligados. • O cliente, que contem os métodos para receber mensagens de outros utilizadores e do servidor.

  3. Servidor User.java ClientInterface.java Main.java Definição Implementação Definição ServerInterface.java

  4. Servidor – Main.java • É o executável do lado do servidor. • Tem a tabela users de utilizadores online. • Implementa as funções definidas em ServerInterface.Java: • boolean addUser(User user) – Adiciona o utilizador á lista de utilizadores online (Hastable users), chama os métodos remotos sendSysMessage e listBoxUpdate de ClientInterface.java para informar que o utilizador ligou-se e enviar a lista actualizada de utilizadores ligados. • boolean removeUser(User user) – Remove o utilizador da lista, chama os métodos anteriores para informar que o utilizador desligou-se e enviar a lista actualizada de utilizadores ligados. • Hashtable getUserList() – Retorna a lista de utilizadores online • User getUser(String user) – Retorna o utilizador sabendo o seu nome • void setUser(User user) – Utilizado pelo addUser() para adicionar o utilizador • boolean hasUser(User user) - Utilizado pelo removeUser() • Contem o método Main() que cria um objecto do tipo Main, cria um registo no porto 10000 e faz o rebind desse objecto com o nome “ServerInterface”

  5. Servidor – ServerInterface.java • Faz a definição dos métodos descritos anteriormente: • boolean addUser(User user) • boolean removeUser(User user) • Hashtable getUserList() • User getUser(String user) • void setUser(User user) • boolean hasUser(User user) • Os dois primeiros métodos são chamados remotamente pelo cliente para este se adicionar ou remover da lista de utilizadores ligados e informar os outros utilizadores do seu estado (online ou offline). Os restantes métodos são chamados pelos primeiros.

  6. Servidor – User.java • Permite criar utilizadores, contendo não só o seu nome mas também outros atributos, dois deles bastante importantes: • IP – endereço ip do utilizador • Port – porto de escuta • Os restantes dados são: • Email e avatar. • Contem procedimentos para retornar e definir os dados anteriores.

  7. Servidor – ClientInterface.java • Contem a definição dos métodos para o envio de texto para uma janela de chat, envio de mensagens para a janela Log e actualização da ListBox do programa. • void sendMessage(User user, String msg) – Executado remotamente pelo cliente “user” para enviar a mensagem “msg” ao cliente local • void sendSysMessage(User user, String msg) – Utilizado remotamente pelo servidor para enviar uma mensagem para a janela principal do cliente local. • void listBoxUpdate(Hashtable si) – Utilizado remotamente pelo servidor para actualizar a lista de utilizadores contida na janela chat principal do cliente local. • void blockUser(User user) – Executado remotamente pelo cliente para bloquear o utilizador local “user”

  8. Cliente ClientInterface.java Definição ServerInterface.java Implementação ClientInterfaceImplem.java Definição ChatFrame.java User.java MainFrame.java

  9. Cliente – ClientInterfaceImplem.java • Implementação dos procedimentos declarados em ClientInterface.java. • Contem a tabela UsersInChat com a lista de utilizadores que estão a falar com o utilizador local e em que janela chat. • Contem a tabela BlockedUsers que contem a lista de utilizadores bloqueados. • void sendMessage(User user, String msg) –Envia a mensagem “msg” do utilizador “user” ao utilizador local. Se o utilizador não existe em UsersInChat, adiciona-o e abre uma nova janela chat. Caso contrário envia o texto para a janela correspondente. • void sendSysMessage(User user, String msg) • void listBoxUpdate(Hashtable si) • void blockUser(User user)

  10. Cliente – MainFrame.java • É o executável do lado do cliente. Abre a janela principal do programa. • Usa a tabela UsersInChat que contem a lista de utilizadores que estão a falar com o utilizador local e em que janela chat e a tabela BlockedUsers • Cria um utilizador com o nome e avatar indicadosno interface, com o IP local e porto disponívela partir do porto 10001 • Executa remotamente o método addUser() • Se o utilizador seleccionado na lista “Users Online” existir em UsersInChat, foca a janela chat correspondente, caso contrário adiciona o utilizador á tabela e abre uma nova janela chat

  11. Cliente - MainFrame.java Avatar. Pode ser alterado fazendo um click com obotão esquerdo do rato. Indicador do estado dos utilizadores (ligados oudesligados do servidor). É alterado pelo servidorusando o SendSysMessage() Lista de utilizadores ligados. É alterada pelo servidor através do método ListBoxUpdate() Adiciona o utilizador seleccionado á lista BlockedUsers com o método blockUser() e envia uma mensagem para a caixa “System Log”

  12. Cliente - ChatFrame • Janela que mostra as mensagens recebidas e envia mensagens a outros utilizadores Texto adicionado pelo SendMessage() Avatar dos dois utilizadores Envia o texto utilizando o método SendMessage() do outro cliente

  13. Feito por: • Hugo Lobo, nº 7137 • Pedro Mateus, nº 8770

More Related