网络编程#003#网络编程中使用的数据结构

头文件:

1
2
3
4
5
/usr/include/x86_64-linux-gnu/bits/sockaddr.h

/usr/include/x86_64-linux-gnu/bits/socket.h

/usr/include/x86_64-linux-gnu/bits/in.h

  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
 32
 33
 34
 35
 36
 37
 38
 39
 40
 41
 42
 43
 44
 45
 46
 47
 48
 49
 50
 51
 52
 53
 54
 55
 56
 57
 58
 59
 60
 61
 62
 63
 64
 65
 66
 67
 68
 69
 70
 71
 72
 73
 74
 75
 76
 77
 78
 79
 80
 81
 82
 83
 84
 85
 86
 87
 88
 89
 90
 91
 92
 93
 94
 95
 96
 97
 98
 99
100
101
102
103
/* Protocol families.  */
#define PF_UNSPEC      0           /* Unspecified.  */
#define PF_LOCAL       1           /* Local to host (pipes and file-domain).  */
#define PF_UNIX        PF_LOCAL    /* POSIX name for PF_LOCAL.  */
#define PF_FILE        PF_LOCAL    /* Another non-standard name for PF_LOCAL.  */
#define PF_INET        2           /* IP protocol family.  */
#define PF_AX25        3           /* Amateur Radio AX.25.  */
#define PF_IPX         4           /* Novell Internet Protocol.  */
#define PF_APPLETALK   5           /* Appletalk DDP.  */
#define PF_NETROM      6           /* Amateur radio NetROM.  */
#define PF_BRIDGE      7           /* Multiprotocol bridge.  */
#define PF_ATMPVC      8           /* ATM PVCs.  */
#define PF_X25         9           /* Reserved for X.25 project.  */
#define PF_INET6       10          /* IP version 6.  */
#define PF_ROSE        11          /* Amateur Radio X.25 PLP.  */
#define PF_DECnet      12          /* Reserved for DECnet project.  */
#define PF_NETBEUI     13          /* Reserved for 802.2LLC project.  */
#define PF_SECURITY    14          /* Security callback pseudo AF.  */
#define PF_KEY         15          /* PF_KEY key management API.  */
#define PF_NETLINK     16
#define PF_ROUTE       PF_NETLINK  /* Alias to emulate 4.4BSD.  */
#define PF_PACKET      17          /* Packet family.  */
#define PF_ASH         18          /* Ash.  */
#define PF_ECONET      19          /* Acorn Econet.  */
#define PF_ATMSVC      20          /* ATM SVCs.  */
#define PF_RDS         21          /* RDS sockets.  */
#define PF_SNA         22          /* Linux SNA Project */
#define PF_IRDA        23          /* IRDA sockets.  */
#define PF_PPPOX       24          /* PPPoX sockets.  */
#define PF_WANPIPE     25          /* Wanpipe API sockets.  */
#define PF_LLC         26          /* Linux LLC.  */
#define PF_IB          27          /* Native InfiniBand address.  */
#define PF_MPLS        28          /* MPLS.  */
#define PF_CAN         29          /* Controller Area Network.  */
#define PF_TIPC        30          /* TIPC sockets.  */
#define PF_BLUETOOTH   31          /* Bluetooth sockets.  */
#define PF_IUCV        32          /* IUCV sockets.  */
#define PF_RXRPC       33          /* RxRPC sockets.  */
#define PF_ISDN        34          /* mISDN sockets.  */
#define PF_PHONET      35          /* Phonet sockets.  */
#define PF_IEEE802154  36          /* IEEE 802.15.4 sockets.  */
#define PF_CAIF        37          /* CAIF sockets.  */
#define PF_ALG         38          /* Algorithm sockets.  */
#define PF_NFC         39          /* NFC sockets.  */
#define PF_VSOCK       40          /* vSockets.  */
#define PF_KCM         41          /* Kernel Connection Multiplexor.  */
#define PF_QIPCRTR     42          /* Qualcomm IPC Router.  */
#define PF_SMC         43          /* SMC sockets.  */
#define PF_XDP         44          /* XDP sockets.  */
#define PF_MCTP        45          /* Management component transport protocol.  */
#define PF_MAX         46          /* For now..  */

/* Address families.  */
#define AF_UNSPEC      PF_UNSPEC
#define AF_LOCAL       PF_LOCAL
#define AF_UNIX        PF_UNIX
#define AF_FILE        PF_FILE
#define AF_INET        PF_INET
#define AF_AX25        PF_AX25
#define AF_IPX         PF_IPX
#define AF_APPLETALK   PF_APPLETALK
#define AF_NETROM      PF_NETROM
#define AF_BRIDGE      PF_BRIDGE
#define AF_ATMPVC      PF_ATMPVC
#define AF_X25         PF_X25
#define AF_INET6       PF_INET6
#define AF_ROSE        PF_ROSE
#define AF_DECnet      PF_DECnet
#define AF_NETBEUI     PF_NETBEUI
#define AF_SECURITY    PF_SECURITY
#define AF_KEY         PF_KEY
#define AF_NETLINK     PF_NETLINK
#define AF_ROUTE       PF_ROUTE
#define AF_PACKET      PF_PACKET
#define AF_ASH         PF_ASH
#define AF_ECONET      PF_ECONET
#define AF_ATMSVC      PF_ATMSVC
#define AF_RDS         PF_RDS
#define AF_SNA         PF_SNA
#define AF_IRDA        PF_IRDA
#define AF_PPPOX       PF_PPPOX
#define AF_WANPIPE     PF_WANPIPE
#define AF_LLC         PF_LLC
#define AF_IB          PF_IB
#define AF_MPLS        PF_MPLS
#define AF_CAN         PF_CAN
#define AF_TIPC        PF_TIPC
#define AF_BLUETOOTH   PF_BLUETOOTH
#define AF_IUCV        PF_IUCV
#define AF_RXRPC       PF_RXRPC
#define AF_ISDN        PF_ISDN
#define AF_PHONET      PF_PHONET
#define AF_IEEE802154  PF_IEEE802154
#define AF_CAIF        PF_CAIF
#define AF_ALG         PF_ALG
#define AF_NFC         PF_NFC
#define AF_VSOCK       PF_VSOCK
#define AF_KCM         PF_KCM
#define AF_QIPCRTR     PF_QIPCRTR
#define AF_SMC         PF_SMC
#define AF_XDP         PF_XDP
#define AF_MCTP        PF_MCTP
#define AF_MAX         PF_MAX

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
typedef unsigned short int sa_family_t;

struct sockaddr
{
    sa_family_t    sa_family;

    char           sa_data[14]; /* Address data. */
};

typedef uint32_t in_addr_t;

struct in_addr
{
    in_addr_t      s_addr;
};

struct sockaddr_in
{
    sa_family_t    sin_family;
    in_port_t      sin_port;
    struct in_addr sin_addr;
    unsigned char  sin_zero[sizeof(struct sockaddr) - __SOCKADDR_COMMON_SIZE - sizeof(in_port_t) - sizeof(struct in_addr)];
};