DESCRIÇÃO DO TRABALHO - VERSÃO DE 29/04/2006 15:00. Descrição Geral do trabalho. O objetivo do trabalho será o desenvolvimento de um programa Cliente/Servidor para o envio e recebimento de arquivos. Os arquivos podem ser enviado do Cliente para o Servidor (upload) ou do Servidor para o Cliente (download). Deverá existir um processo de autenticação do usuário na entrada do programa Cliente contra uma base de dados do Servidor. Os programas deverão seguir as especificações abaixo descritas. Descrição do programa Cliente. Deverá ser executado na plataforma Windows 2000 e desenvolvido com linguagem C. O cliente quando acionado irá solicitar para o usuário as informações para autenticação (usuário e senha)conforme TELA 1. A informações serão enviadas para o programa servidor de forma criptografada, de onde virá uma resposta (status) de confirmação ou uma negativa. Caso a resposta seja negativa, deverá apresentado a TELA 02 ou TELA 3, juntamente com a devida mensagem de erro. Após, deverá ser encerrado o programa. Após a validação positiva, será apresentado a TELA 4. Se ocorrer a escolha de uma opção inválida deverá ser mostrado a TELA 5. Antes de transferir o arquivo (upload ou download) é necessário verificar a existência do arquivo a ser transferido. Caso o arquivo não exista, deverá ser mostrado a TELA 6. Durante a transferência do arquivo, deverá ser impresso na tela o símbolo -> para upload e <- para download, para cada pacote recebido ou transmitido. TELA 01 - AUTENTICAÇÃO FILE TRANSFER CLIENTE USUÁRIO: xxxxxxxxxxxxxxxxx SENHA: yyyyyyyyyyyyyyyyy TELA 02 ERRO DE AUTENTICAÇÃO ERRO DE AUTENTICAÇÃO
MOTIVO: USUÁRIO NÃO CADASTRADO TENTE NOVAMENTE!!!!!!!!!! TELA 03 ERRO DE AUTENTICAÇÃO ERRO DE AUTENTICAÇÃO MOTIVO: SENHA INVALIDA TENTE NOVAMENTE!!!!!!!!!! TELA 04 OPÇÕES DO COMANDO? TELA 05 VALIDAÇÃO DE OPÇÃO. OPÇÃO INVÁLIDA. TELA 05 ENVIO DE MENSAGEM ARQUIVO LOCAL: ARQUIVO REMOTO: PACOTES ENVIADOS: ->->->-> TELA 05 RECEBIMENTO DE MENSAGEM ARQUIVO LOCAL: ARQUIVO REMOTO: PACOTES RECEBIDOS: <-<-<-<-<- TELA 06 ARQUIVO NÃO FOI ENCONTRADO. O ARQUIVO A SER TRANSFERIDO NÃO FOI ENCONTRADO.
Descrição do programa Servidor. Deverá ser executado na plataforma LINUX e ser desenvolvido em linguagem C. Deverá ser multitarefa, isto é um processo será criado para cada cliente conectado. O servidor possuirá uma base de dados que será chamada de "passwd.txt". Nesta base de dados, estarão cadastrados todos os usuários e as senhas, conforme descrição abaixo. Para cada conexão de um cliente o servidor realizará a autenticação através uma conta e uma senha. O servidor deverá gerar um arquivo de log de toda conexão. O arquivo de log deverá ter o seguinte o seguinte nome: usuário_ddmmaa_hhmmss.log, onde ddmmaa refere-se ao dia, mês e ano e hhmmss refere-se a hora, minuto e segundo. Neste arquivo deve ser gravado todas as atividades do usuário no seguinte formato: Dia/Mês/Ano hora:min:seg, Procedimento, Ação ou informações referente a execução. Todos os pacotes que recebidos e enviados para o cliente devem ser registrados no arquivo de log no seguinte formato: Dia/Mês/Ano hora:min:seg, Procedimento, Seqüência, informações do pacote.
Procedimento AUTENTICAÇÃO Este procedimento é realizado para validar o usuário e senha que são utilizados na comunicação entre o cliente e o servidor. Estrutura de Dados struct Autenticação int procedimento = 1; int status; char user[30]; char passwd[30]; Descrição dos campos. procedimento - Numero do procedimento é sempre um valor constante, 1 = Autenticação. sequencia - Identificação da mensagem durante o processo de autenticação. status - Valor auxiliar para controlar respostas. user - nome do usuário para autenticação. passwd - senha a ser autenticada. 1 Cliente solicita abertura do processo de autenticação (manda usuário + senha). 2 Servidor responde ao processo de autenticação. A resposta está no campo status. descritos no campo. Status 0, Usuário autenticado corretamente Status 1, Usuário não foi encontrado Status 2, Senha Incorreta. 3 Cliente avisa a continuidade da comunicação com servidor. 4 Servidor confirma continuidade da comunicação. Ou 5 Cliente avisa o final da comunicação com servidor. 6 Servidor confirma o final da comunicação. Após a troca das mensagens com status 1 e 2 os processos devem ser encerrados.
Procedimento CMD. Este procedimento é utilizado para enviar comandos para o servidor. Os comandos possíveis são: Put, enviar arquivos Get, receber arquivos Quit, encerrar a sessão de trabalho Help, ajuda online Os comandos são validados pelo servidor, ou seja, todos os comandos digitados no cliente devem ser enviados para o servidor que analisará e devolverá uma resposta para o cliente. O cliente não realiza nenhuma critica em relação aos comandos inválidos. Na execução da opção Help, o Servidor enviará um texto de ajuda para o usuário. Este texto será mostrado para o usuário através do programa cliente. Estrutura de dados struct cmd int procedimento = 2; int status; char cmd [10]; Descrição dos campos. procedimento - Numero do procedimento é sempre um valor constante, 2 = Envio de comandos. sequencia - Identificação da mensagem durante o processo de autenticação. status - Valor auxiliar para controlar respostas. cmd - Comando a ser enviado para o Servidor. 1 Cliente envia a string de comando para o servidor. 2 Servidor responde com status de validação do comando. Status 0 Comando reconhecido pelo servidor Status 1 Comando não reconhecido pelo servidor. 3 - Cliente avisa mudança de estado para o comando requisitado. 4 - Servidor Confirma mudança de estado para o comando requisitado.
Procedimento PUT Este procedimento é realizado para enviar um arquivo para o Servidor. Estrutura de Dados struct put int procedimento = 3; char arq_local[50]; char arq_remoto[50]; int final; int nr_bloco; char bloco[512]; Descrição dos campos. procedimento - Numero do procedimento é sempre um valor constante, 3 = PUT. sequencia - Identificação da mensagem durante o processo de transferencia. Arq_local Nome do arquivo local a ser transmitido. Arq_remoto Nome do arquivo que será gravado no servidor Final Indica o final de arquivo a ser transmitido Nr_bloco Número do bloco a ser transmitido. Bloco Registro que está sendo transmitido. 1 Cliente envia nome do arquivo local e remoto. 2 Servidor confirma recebimento. 3 Cliente avisa que irá iniciar a transmissão com o Bloco de número zero. 4 Servidor confirma o inicio da transmissão com o Bloco de número zero 5 Cliente envia o bloco de informação + Número do bloco + final de arquivo 6 Servidor confirma recebimento do bloco xxxxx Loop entre 5 e 6 7 Cliente envia aviso de final de transmissão 8 Servidor confirma final de transmissão. 9 Cliente envia aviso de final de comando. 10 Servidor confirma final de comando. Após o final do comando, o cliente volta para o estado de envio de comando e o servidor para o estado de recebimento de comando.
Procedimento GET Este procedimento é realizado para receber um arquivo que está no Servidor. Estrutura de Dados struct get int procedimento = 4; int status; char arq_local[50]; char arq_remoto[50]; int final; int nr_bloco; char bloco[512]; Descrição dos campos. procedimento - Numero do procedimento é sempre um valor constante, 3 = PUT. sequencia - Identificação da mensagem durante o processo de transferencia. Status Variável auxiliar utilizado durante a troca de mensagens de nome de arquivos. Arq_local Nome do arquivo local a ser transmitido. Arq_remoto Nome do arquivo que será gravado no servidor Final Indica o final de arquivo a ser transmitido Nr_bloco Número do bloco a ser transmitido. Bloco Registro que está sendo transmitido. 1 Cliente envia solicitação do nome do arquivo local e remoto. 2 Servidor confirma recebimento da solicitação. Status = 0, O arquivo existe no servidor. Status = 1, O arquivo não existe no servidor. 3 Cliente avisa que está pronto para receber a transmissão com o Bloco de número zero. 4 Servidor confirma o inicio da transmissão com o Bloco de número zero 5 Servidor envia o bloco de informação + Número do bloco + final de arquivo 6 Cliente confirma recebimento do bloco xxxxx. Loop entre 5 e 6 7 Servidor envia aviso de final de transmissão 8 Cliente confirma final de transmissão. 9 Cliente envia aviso de final de comando. 10 Servidor confirma final de comando.
Após o final do comando, o cliente volta para o estado de envio de comando e o servidor para o estado de recebimento de comando. Procedimento QUIT Este procedimento é realizado finalizar a Sessão com o Servidor. Estrutura de Dados struct quit int procedimento = 5; 1 Cliente envia solicitação de final de conexão 2 Servidor confirma recebimento da solicitação. 3 Cliente avisa que está encerrando a conexão. 4 Servidor confirma o encerramento da conexão. OS ITENS ABAIXO PODEM SOFRER VARIAÇÕES ATÉ A DATA DE AVALIAÇÃO. O trabalho deverá ser entregue até o dia 5 de junho até as 18:00. Deverá ser entregue um arquivo ZIP, com todos os arquivos que serão utilizados na defesa do trabalho. O arquivo ZIP deve ser enviado para a caixa postal airton@fesppr.br. A defesa do trabalho será realizado no dia 7 de Junho de 2006. Os trabalhos entregues fora da data especificada, terão um desconto de 4 pontos. Para realizar a defesa do trabalho será utilizada somente o conteúdo do arquivo ZIP que foi enviado. Qualquer problema de integridade do arquivo ZIP é responsabilidade da equipe. Peso do Trabalho. 4 Pontos. Critérios de Avaliação. Defesa Individual 2,5 Atendimento aos requisitos 1,0 Defesa em grupo, 0,5