ابزار کاربر

ابزار سایت


c-socket-programming:structs

این یک نگارش قدیمی از این مطلب است!


لیست structهای مورد نیاز

در لیست زیر structها و manual هایی که در باره آنها توضیح داده اند مشخص شده اند:

// man 3 getaddrinfo
// Header: /usr/include/netdb.h
// Source: glibc-2.39/resolv/netdb.h
// Debian package: libc6-dev
struct addrinfo {
    int              ai_flags;     // AI_PASSIVE, AI_CANONNAME, etc.
    int              ai_family;    // AF_INET, AF_INET6, AF_UNSPEC
    int              ai_socktype;  // SOCK_STREAM, SOCK_DGRAM, 0
    int              ai_protocol;  // use 0 for "any"
    socklen_t        ai_addrlen;   // size of ai_addr in bytes
    struct sockaddr *ai_addr;      // struct sockaddr_in or sockaddr_in6
    char            *ai_canonname; // full canonical hostname
    struct addrinfo *ai_next;      // linked list, next node
};
// man 2 bind
// man 3 sockaddr
// Header: /usr/include/bits/socket.h (/usr/include/x86_64-linux-gnu/bits/socket.h)
// Source: glibc-2.39/bits/socket.h (glibc-2.39/bits/sockaddr.h)
// Debian package: libc6-dev
struct sockaddr {
    sa_family_t    sa_family;    // address family, AF_xxx
    char           sa_data[14];  // 14 bytes of protocol address
};
// man 7 ip
// man 3 sockaddr
typedef uint16_t in_port_t;
struct sockaddr_in {
    sa_family_t     sin_family;  // Address family, AF_INET
    in_port_t       sin_port;    // Port number, Network Byte Order with htons()
    struct in_addr  sin_addr;    // Internet address
    unsigned char   sin_zero[8]; // Same size as struct sockaddr, set to zero with memset()
};
// man 7 ipv6
// man 3 sockaddr
typedef uint16_t in_port_t;
struct sockaddr_in6 {
    sa_family_t     sin6_family;    // Address family, AF_INET6
    in_port_t       sin6_port;      // Port number, Network Byte Order
    u_int32_t       sin6_flowinfo;  // IPv6 flow info
    struct in6_addr sin6_addr;      // IPv6 address
    u_int32_t       sin6_scope_id;  // Set of interfaces for a scope (Scope ID)
};
// man 7 ip
// man 3 inet
// man 3 sockaddr
// Internet address (a structure for historical reasons)
typedef uint32_t in_addr_t;
struct in_addr {
    in_addr_t s_addr; // that's a 32-bit int (4 bytes)
};
// man 7 ipv6
// man 3 sockaddr
struct in6_addr {
    uint8_t   s6_addr[16];   // IPv6 address
};
// man 7 socket
// man 3 sockaddr
// both IPv4 and IPv6
struct sockaddr_storage {
    sa_family_t  ss_family;     // address family
    // all this is padding, implementation specific, ignore it:
    char      __ss_pad1[_SS_PAD1SIZE];
    int64_t   __ss_align;
    char      __ss_pad2[_SS_PAD2SIZE];
};
c-socket-programming/structs.1718661831.txt.gz · آخرین ویرایش: 2024/06/18 01:33 توسط pejman

به جز مواردی که ذکر می‌شود، مابقی محتویات ویکی تحت مجوز زیر می‌باشند: Public Domain
Public Domain Donate Powered by PHP Valid HTML5 Valid CSS Driven by DokuWiki