Exercício-Programa 1: Melhorias no IRC Lite do Armstrong Grupo: Gustavo Luis Duarte NUsp: 6650494 Marcio Vinicius dos Santos NUsp: 5146346 ESTRUTURA DO ARQUIVO A estrutura dos arquivos contidos nesse Ep encontram-se no mesmo formato extraído do site do armstrong. irc-lite/ contém depedências necessárias para executar o chat. irc-lite/socket_dist/ código do chat, lib_chan e arquivos de configuração. GERAÇÃO DO PROGRAMA O processo de geração do programa e similar ao do chat original, a única diferença é que é preciso configurar uma variável de ambiente com o ip: export chat_host=<Endereço de ip> cd irc-lite/ make cd socket_dist/ LEVANTANDO O CHAT_SERVER make chat_server EXECUTANDO O CLIENTE make chat_client MELHORIAS ADICIONADAS 1. Side panel, contendo lista de usuários, 2. Comando /who que lista todas as pessoas de um grupo, 3. Comando /list que lista todos os grupos, 4. Comando /priv <destinatário> <msg> que manda mensagem privada para o destinatário 5. Controle do grupo se encontra na máquina do primeiro usuário que entra no grupo. A primeira coisa que o cliente faz é conectar com o servidor principal (Name Server ou Ns) e fazer um lookup para saber qual o ip da máquina que estah hospedando o grupo em questão. Em seguida o cliente abre uma conexão com o ip devolvido e faz login no grupo. No caso em que o grupo não existe, o lookup responde 'notfound' e o cliente levanta um servidor na sua maquina, registra-se no servidor central como hospedeiro do grupo e faz login nesse grupo. Mesmo apos conectado com o grupo o cliente ainda mantem a conexao com o servidor de nomes pois eh este quem realiza a listagem de grupos. Para que a lista do servidor de nomes nao fique desatualizada, este lanca um processo que periodicamente abre uma conexao e fecha logo em seguida com cada um dos IPs cadastrados em sua lista. Aqueles que falharem a conexao sao removidos da lista de grupos conhecidos pelo servidor. Se nao tivessemos implementado isso, uma vez criado um grupo, caso o cliente que hospedava aquele grupo desconecte, outros cliente nao conseguiriam entrar ou criar novamente o grupo.