IC-UNICAMP - MC823AB

Prof. Paulo Lício de Geus / Mon. Felipe M Pereira
1s2004



Atividades

Novidades

FAQ

Obs.: Depois de categorizada, uma FAQ é anexada ao fim da categoria.

  1. Burocracia
    1. Até que horas posso entregar meu relatório?

      R: O relatório deverá ser entregue até a meia-noite, em formato eletrônico.

  2. Sistema/Compilação
    1. Recebi a seguinte mensagem de erro:
        /lib/libc.so.6: undefined reference to `__libc_stack_end@GLIBC_2.1'
        collect2: ld returned 1 exit status
      

      R: Isso deve ocorrer para quem usa o ambiente do GPSL. Adicione a linha GPSL_PRIORITY=1 antes da chamada ~gpsl/configurar_area.sh ao seu arquivo de inicialização do shell.

    2. Onde encontro sistema Solaris e máquinas SPARC?

      R: As máquinas tigre.ic.unicamp.br e pinheiros.ic.unicamp.br são SPARC e rodam SunOS (Solaris que mudou de nome).

    3. Como compilar no Solaris?

      R: Para compilar no Solaris, use:

        gcc -Wall -o arq arq.c -lsocket -lresolv -lnls
      

    4. Onde encontro sistemas Linux aos quais posso me conectar de fora do IC?

      R: As máquinas belem.ic.unicamp.br e manaus.ic.unicamp.br rodam Linux e servidor de acesso remoto seguro (SSH) e estão integradas ao ambiente do IC (montam home).

  3. Atividade 02
    1. Parte A
      1. Na seção "Handling partial sends" no guia do Beej lê-se que pode acontecer que send() não envie todos os dados em uma só chamada. Ainda na mesma seção é apresentada a função sendall() que repete o send() até mandar todos os dados. Devo implementar/usar sendall() (ou similar) neste experimento?

        R: Não. O objetivo do experimento é demonstrar que não há correspondência entre o número de send()s e o número de recv()s. Para tal, o cliente deve efetuar apenas um send() de (cerca de) 32KB de dados e mostrar quanto foi realmente enviado. Foi constatado que, no Linux, todos os 32KB são enviados em uma chamada.

        Já no lado servidor, será necessário, sim, repetir recv() até que recv(...)==0 (fim da transmissão). Não use o indicador MSG_WAITALL.

        Leitura recomendada:

        • send(2) (em especial sobre a opção MSG_DONTWAIT, que não deve ser usada na atividade 2);
        • opção SO_SNDTIMEO em socket(7), que diz que no Linux send() não é interrompido por timeout (isso ocorre no BSD, de acordo com livro TCP/IPv2; visto que o livro é de 1995, pode ter mudado desde então).

  4. Atividade 01
    1. Preciso fazer um cliente de eco também ou apenas o servidor? R: Sim, precisa.

    2. Tentei redirecionar a entrada do comando telnet para um arquivo da seguinte forma:
        telnet localhost 3490 < arquivo
      

      e recebi a mensagem de erro "Broken pipe". O que aconteceu?

      R: O telnet é um comando interativo e espera que a entrada padrão seja um terminal. Para mais informações veja a página http://linuxgazette.net/issue50/tag/34.html e o comando netcat/nc(1).

Referências

Horário

Contato/Atendimento

Bibliografia

Sockets

Datas importantes

Do calendário de graduação:


by Felipe M. Pereira

made with txt2tags