函数bind

头文件:

  #include <sys/types.h>

  #include <sys/socket.h>

函数功能:

  把协议族中的特定地址赋值给socket,例如:对应AF_INET,AF_INET6就是把一个ipv4或ipv6的地址和端口号组合起来赋值给socket。

函数原型:

  int bind(int sockfd, const struct sockaddr *addr, socklen_t addrlen);

    sockfd:服务器socket描述符

    addr:一个const struct sockaddr *指针,指向要绑定给服务器sockfd的协议地址,其中不同的协议对应不同的结构:

      ipv4对应的是:

      struct sockaddr_in

      {

        sa_family_t     sin_family;

        in_port            sin_port;

        struct in_addr sin_addr;

      }

       struct in_addr

      {

        uint32_t s_addr;

      }

    addrlen:地址的长度

通常服务器在启动的时候,会绑定一个众所周知的地址(IP地址+端口号)用于提供服务,客户就可以通过该地址来连接服务器;而客户端就不用指定,由系统自动分配一个端口号和IP地址进行组合。这就是为什么服务器在listen之前会调用bind(),而客户端就不需要,客户端是在connect()时由系统随机进行生成。

posted @ 2018-06-09 13:52  c&z  阅读(420)  评论(0编辑  收藏  举报