Trabalho de Redes
Por: Welyngtton Sales • 7/6/2016 • Trabalho acadêmico • 787 Palavras (4 Páginas) • 255 Visualizações
Trabalho 1 Redes de Computadores Rede de Compartilhamento Descrição Geral: O aplicativo descrito tenta simular o funcionamento de uma rede de compartilhamento de arquivos (peer-to-peer) funcionando ao mesmo tempo como cliente e servidor. O aplicativo utiliza a forma de comunicação por broadcast através de sockets UDP para se comunicar com os outros usuários. O programa foi desenvolvido utilizando threads por serem mais flexíveis e versáteis do que a chamada de sistema fork(). Durante a execução do programa, duas threads são criadas. Uma é responsável por ler comandos do usuário, solicitar informações da rede e apresentar os resultados ao usuário. A outra, é responsável por escutar comando vindos de outros usuários remotos, processar a requisição e devolver o resultado para o pedinte. Para facilitar a troca de mensagens entre os usuários, foi criado uma struct para servir de protocolo de comunicação, representado pela seguinte forma: struct cabecalhoProtocolo { char data[35]; char filename[MAX_NAME]; char dir[3000]; long filesize; } O campo data guarda informações de controle; O campo filename é utilizado para guardar o nome de um arquivo quando há uma solicitação de transferência; O campo dir guarda uma concatenação de strings, que é passada para um usuário quando ele solicita uma lista de arquivos disponíveis na rede. O campo filesize guarda o tamanho de um arquivo solicitado. Dos Arquivos: O programa foi modularizado em várias funções, e também foi organizado em alguns arquivos de cabeçalho, são eles: main.c : É o arquivo principal do programa. Onde começa a execução e outras funções são invocadas. libs.h: Contém todas as bibliotecas externas necessárias para o funcionamento do programa. dataDefinitions.h : Contém a definição do protocolo utilizado no trabalho, e algumas constantes. functions.h: Contém as assinaturas e implementações de todas as funções utilizadas no trabalho. O programa também gera um log na pasta raíz do projeto, que guarda informações diversas do funcionamento do programa, bem como requisições recebidas. Do Temporizador: Como temporizador, foi usada a função select() do C com o auxílio da estrutura timeval, para definir um tempo máximo de espera e impedir que a execução do programa seja interrompida por uma espera infinita. Das Funções: Descrição das funções implementadas: startApp: Função responsável por criar e inicializar as Threads, respectivamente para as funçoes incommingBroadcastThread() e incommingLocalThread(). initializeSockOUT: Cria e inicializa o socket de saída, responsável por enviar as mensagens para os outros usuários. initializeSockIN: Cria e inicializa o socket de entrada, responsável por receber requisições remotas de outros usuários. gerarLog: Cria um arquivo de log na primeira vez que o programa é executado e mantém-o atualizado, registrando informações importantes no decorrer da execução do programa. listFiles: A função formata um determinado pacote que contém o nome de todos os arquivos de um usuário, para ser enviado a outro usuário, que requeriu a lista de arquivos na rede. readyFile: Função que prepara um pacote para ser enviado para outro usuário. O pacote é inicializado com determinadas informações, de acordo com o tipo de requisição que se deseja fazer. ipsFromNet: É feita uma requisição broadcast na rede, e a função imprime na saída padrão
...