MC833 - Programação em Redes de Computadores - 1s 2014
Exercício 3: Simplex-Talk
Professora Juliana Freitag Borin
Objetivo: Aprender a usar a abstração de socket na linguagem C e as chamadas de sistema associadas. Essas chamadas são muito úteis para construir aplicações de rede. Seus próximos laboratórios serão construídos com base nessas chamadas de sistema, por tanto, é importante que você se sinta confortável com seu uso.
Critérios para entrega e correção do exercício:
1. este exercício é individual;
2. O material a ser entregue deve ser enviado em um arquivo .tag.gz para castudillo (at) lrc (dot) ic (dot) unicamp (dot) br até às 9:59 do dia 20/03/2014. O nome do arquivo deve ser "exercicio3-raXXXXX", onde XXXXX deve ser substituído pelo número do seu RA;
3. o assunto da mensagem deve ser "MC833 - exercício 3";
4- a nota da atividade será 0 ou 1. 1, caso todas as questões estejam respondidas de forma satisfatória E a entrega atenda aos critérios 1, 2 e 3; 0, caso contrário.
client.c
e server.c
contém, a implementação de um programa cliente/servidor simples que usa a interface de sockets para enviar mensagens por uma conexão TCP. O programa também usa outros utilitários de rede do UNIX, que serão apresentados à medida que eles aparecerem. Nossa aplicação permite que um usuário em uma máquina digite e envie texto a um usuário em outra máquina. Essa é uma versão simplificada do programa talk ("conversa") do UNIX, que aqui chamamos de Simplex-Talk. Essa aplicação é semelhante ao núcleo de uma aplicação de mensagem instantânea.
AF_INET
). Em nosso exemplo, usamos a porta TCP 10 como a porta bem conhecida do servidor; acontece que esta é uma porta que não foi atribuída a qualquer outro serviço da Internet. A última etapa no estabelecimento da conexão é estabelecida e o programa cliente entra no seu laco principal, que lê texto proveniente da entrada padrão e o envia pelo socket.
SERVER_PORT
). Como ele não especifica um endereço IP, o aplicativo está disposto a aceitar conexões em qualquer um dos endereços IP do host local. Em seguida, o servidor realiza as etapas preliminares envolvidas em uma abertura passiva; ele cria o socket, o vincula ao endereço local e define o número máximo de conexões pendentes permitidas. Por fim, o laco principal espera até que um host remoro tente se conectar e, quando algum host fizer isso, o aplicativo recebe e imprime os caracteres que chegam pela conexão.
client.c
e a sua estação para executar o binário gerado
pela compilação do server.c
)bind
reportou algum erro? Em caso afirmativo, qual a sua causa? Se
necessário, modifique os programas de forma que este erro seja
corrigido e informe quais modificações foram realizadas.telnet
pode ser usado no lugar do binário
do client.c
? Por que? Caso o telnet
possa ser usado,
copie a saída do servidor e da execução do telnet
. Cite uma
modificação no servidor.c
que impediria a utilização do
telnet
servidor.c
e cliente.c
modificados conforme solicitado nos passos acima e devidamente
comentados.servidor.c
e cliente.c
(Podem ser utilizados os programas a2ps e ps2pdf para gerar o arquivo -- Leia a manpage do a2ps!!! Por padrão a saída é enviada direto para a impressora!!!).