linux网络 bind 实例代码

connections:


#include

#include

#include

#include

#include


#define MY_SOCK_PATH "/somepath"

#define LISTEN_BACKLOG 50


#define die(msg) do { perror(msg); exit(EXIT_FAILURE); } while (0)


int

main(int argc, char *argv[])

{

    int sfd, cfd;

    struct sockaddr_un my_addr, peer_addr;

    socklen_t peer_addr_size;


    sfd = socket(AF_UNIX, SOCK_STREAM, 0);

    if (sfd == -1)

        die("socket");


    memset(&my_addr, 0, sizeof(struct sockaddr_un));

                        /* Clear structure */

    my_addr.sun_family = AF_UNIX;

    strncpy(my_addr.sun_path, MY_SOCK_PATH,

            sizeof(my_addr.sun_path) - 1);


    if (bind(sfd, (struct sockaddr *) &my_addr,

            sizeof(struct sockaddr_un)) == -1)

        die("bind");

   

    if (listen(sfd, LISTEN_BACKLOG) == -1)

        die("listen");


    /* Now we can accept incoming connections one

      at a time using accept(2) */


    peer_addr_size = sizeof(struct sockaddr_un);

    cfd = accept(sfd, (struct sockaddr *) &peer_addr,

                &peer_addr_size)

    if (cfd == -1)

        die("accept");


    /* Code to deal with incoming connection(s)... */


    /* When no longer required, the socket pathname, MY_SOCK_PATH

      should be deleted using unlink(2) or remove(3) */

}

你可能感兴趣的:(linux网络 bind 实例代码)