Labs SD >

Invocação de procedimentos remotos com SUN RPC

Objectivos da semana

Materiais de apoio à aula

Exercício a resolver até ao fim da aula

  1. Numa máquina Linux/Unix, descarregue e descomprima o código fonte de um cliente e servidor do Jogo do Galo/Tic Tac ToeZIP, baseado em Sun RPC .
    Tic Tac Toe
    Sugestões:

  2. Estude a interface remota deste servidor (ficheiro ttt.x) e explore a implementação do servidor para compreender como cada procedimento remoto está implementado.
    Observe também os restantes ficheiros com nome iniciado por ttt.

  3. Execute na consola:
    > rpcgen ttt.x
    para que o SUN RPC gere os vários ficheiros de suporte à aplicação distribuída.
    Depois execute:
    > rpcgen -Sc ttt.x > ttt_client.c
    para gerar um exemplo de um cliente. (existe também a opção -Ss para gerar um exemplo de servidor)

  4. Tente responder às seguintes questões:
    1. Para que serve o mutex usado no ficheiro ttt_lib.c?
    2. Em que ficheiro estão as rotinas de conversão de tipos de dados?
    3. Onde é chamada a função clnt_call()?
    4. Que ficheiros pertencem ao cliente? E ao servidor? E a ambos?
      (consulte também a Makefile)
    5. Que ficheiros estão incompletos e devem ser alterados pelo programador?
    6. Qual o protocolo que o cliente e servidor usam para comunicar?

  5. Pretende-se também que haja um processo cliente (que possivelmente corre em máquina diferente que o servidor) que interage com os jogadores e que invoca as funções do servidor remotamente, via SUN RPC.

    A lógica desse cliente já está programada em local_main.c, mas esse ficheiro está feito assumindo chamadas locais.
    Com base no local_main.c, modifique o ficheiro ttt_client.c por forma a obter um cliente do servidor remoto.

    Sugestão: i) copie o código da função main do local_main.c para dentro do método ttt_1 de ttt_client.c; ii) procure as linhas onde existem chamadas locais às funções currentBoard, play e checkWinner e substitua essas chamadas pelos exemplos de chamadas remotas que já existem no ficheiro ttt_client.c gerado; iii) Não se esqueça de verificar o retorno da chamada remota ao servidor e garantir o tratamento adequado em caso de erro.
    Utilize o comando make para compilar.

  6. Lance o servidor e experimente jogar remotamente através do cliente construído.
    Para tal, execute na consola:
    > ./ttt_server &
    (lança o servidor em segundo plano background)
    > ./ttt_client localhost
    (lança o cliente para jogar em servidor registado na própria máquina (localhost)

  7. Pode consultar o estado dos processos com o comando ps e terminar instâncias com o comando kill.

O resto do enunciado será entregue na aula. O objectivo será estender a solução resultante do enunciado acima com mais procedimentos ou modificar alguns dos seus procedimentos actuais.

Entrega da solução

Fénix, Avaliação, Projetos, mini Exercício 1 - Sun RPC

A solução completa deverá ser submetida no Fénix antes do fim da sua aula de laboratório.
Trabalhos submetidos depois da hora de fim da aula não serão considerados.

Ter atenção ao seguinte:


© Docentes de Sistemas Distribuídos, Dep. Eng. Informática, Técnico Lisboa