Skip to content

GSD

Sections
Personal tools
You are here: Home » Teaching » Sistemas Operativos II » 5306O2 - Sistemas Operativos II (2006 - 2007) » Guiões das Aulas Práticas » #01 - Introdução à comunicação orientada à conexão utilizando a API de Sockets

#01 - Introdução à comunicação orientada à conexão utilizando a API de Sockets

Document Actions

Resumo

Introdução à comunicação TCP/IP recorrendo à API de Sockets. Apresentação das principais estruturas de dados, chamadas ao sistemas e funções auxiliares. Implementação de um cliente e servidor rudimentares de echo.

Principais chamadas ao sistema

    #include <sys/types.h>
    #include <sys/socket.h>

    int socket(int domain, int type, int protocol);
    int listen(int sockfd, int backlog);
    int bind(int sockfd, struct sockaddr *my_addr, socklen_t addrlen);
    int accept(int sockfd, struct sockaddr *addr, socklen_t *addrlen);
    int connect(int sockfd, const struct sockaddr *serv_addr, 
            socklen_t addrlen);

    #include <unistd.h>

    ssize_t read(int fd, void *buf, size_t count);
    ssize_t write(int fd, const void *buf, size_t count);
    int close(int fd);

Estrutura de endereço de sockets IP

    #include <netinet/in.h>

    struct in_addr {
      in_addr_t        s_addr;      /* endereço IPV4 (32 bits, ord. rede) */
    }

    struct sockaddr_in {
      sa_family_t      sin_family;  /* AF_INET */
      in_port_t        sin_port;    /* porto (16 bits, ord. rede) */
      struct in_addr   sin_addr;    /* endereço IPv4 (32 bits, ord. rede) */
      char             sin_zero[8]; /* não usado */
    }

Manipulação de representações de endereços IP

    #include <sys/types.h>
    #include <sys/socket.h>
    #include <arpa/inet.h>

    int inet_pton(int af, const char *src, void *dst);
    const char *inet_ntop(int af, const void *src,
                          char *dst, socklen_t cnt);
    #include <sys/socket.h>
    #include <netinet/in.h>
    #include <arpa/inet.h>

    int inet_aton(const char *cp, struct in_addr *inp);
    char *inet_ntoa(struct in_addr in);

Ordenação de dados

    #include <arpa/inet.h>

    uint32_t htonl(uint32_t hostlong);
    uint16_t htons(uint16_t hostshort);
    uint32_t ntohl(uint32_t netlong);
    uint16_t ntohs(uint16_t netshort);

Exercícios propostos

  1. Implemente um programa cliente do serviço de echo que executa no porto 7 de cada uma das máquinas. O programa deverá enviar uma linha de texto para o servidor e escrever a resposta recebida.
  2. Implemente um programa servidor de echo apropriado ao cliente implementado no exercício anterior.
Created by gsd
Last modified 2007-02-26 02:38 PM
« March 2015 »
Su Mo Tu We Th Fr Sa
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30 31        
 
 

Powered by Plone

This site conforms to the following standards: