The <sys/socket.h> header defines the unsigned integral type sa_family_t through typedef.
The <sys/socket.h> header defines the sockaddr structure that includes the following members:
sa_family_t | sa_family | /* address family */ |
char | sa_data[] | /* socket address (variable-length data) */ |
The <sys/socket.h> header defines the msghdr structure that includes the following members:
void | *msg_name | /* optional address */ |
size_t | msg_namelen | /* size of address */ |
struct iovec | *msg_iov | /* scatter/gather array */ |
int | msg_iovlen | /* members in msg_iov */ |
void | *msg_control | /* ancillary data, see below */ |
size_t | msg_controllen | /* ancillary data buffer len */ |
int | msg_flags | /* flags on received message */ |
The <sys/socket.h> header defines the cmsghdr structure that includes the following members:
size_t | cmsg_len | /* data byte count, including hdr */ |
int | cmsg_level | /* originating protocol */ |
int | cmsg_type | /* protocol-specific type */ |
Ancillary data consists of a sequence of pairs, each consisting of a cmsghdr structure followed by a data array. The data array contains the ancillary data message, and the cmsghdr structure contains descriptive information that allows an application to correctly parse the data.
The values for cmsg_level will be legal values for the level argument to the getsockopt() and setsockopt() functions. The SCM_RIGHTS type is supported for level SOL_SOCKET.
Ancillary data is also possible at the socket level. The <sys/socket.h> header defines the following macro for use as the cmsg_type value when cmsg_level is SOL_SOCKET:
-
SCM_RIGHTS
- Indicates that the data array contains the access rights to be
sent or received.
The <sys/socket.h> header defines the following macros to gain access to the data arrays in the ancillary data associated with a message header:
-
CMSG_DATA(cmsg)
- If the argument is a pointer to a cmsghdr
structure, this macro returns an unsigned character pointer to the data array associated with the cmsghdr structure.
-
CMSG_NXTHDR(mhdr,cmsg)
- If the first argument is a pointer to a msghdr structure and the second
argument is a pointer to a cmsghdr structure in the ancillary data, pointed to by the msg_control field of that msghdr structure, this macro returns
a pointer to the next cmsghdr structure, or a null pointer if this structure is the last cmsghdr in the ancillary data.
-
CMSG_FIRSTHDR(mhdr)
- If the argument is a pointer to a msghdr structure, this macro returns a pointer
to the first cmsghdr structure in the ancillary data associated with this msghdr structure, or a null pointer if there is no ancillary data associated with the msghdr structure.
The <sys/socket.h> header defines the linger structure that includes the following members:
int | l_onoff | /* indicates whether linger option is enabled */ |
int | l_linger | /* linger time, in seconds */ |
The <sys/socket.h> header defines the following macros:
-
SOCK_DGRAM
- Datagram socket
-
SOCK_STREAM
- Byte-stream socket
-
SOCK_SEQPACKET
- Sequenced-packet socket
The <sys/socket.h> header defines the following macro for use as the level argument of setsockopt() and getsockopt().
-
SOL_SOCKET
- Options to be accessed at socket level, not protocol level.
The <sys/socket.h> header defines the following macros: for use as the option_name argument in getsockopt() or setsockopt() calls:
-
SO_DEBUG
- Debugging information is being recorded.
-
SO_ACCEPTCONN
- Socket is accepting connections.
-
SO_BROADCAST
- Transmission of broadcast messages is supported.
-
SO_REUSEADDR
- Reuse of local addresses is supported.
-
SO_KEEPALIVE
- Connections are kept alive with periodic messages.
-
SO_LINGER
- Socket lingers on close.
-
SO_OOBINLINE
- Out-of-band data is transmitted in line.
-
SO_SNDBUF
- Send buffer size.
-
SO_RCVBUF
- Receive buffer size.
-
SO_ERROR
- Socket error status.
-
SO_TYPE
- Socket type.
The <sys/socket.h> header defines the following macros for use as the valid values for the msg_flags field in the msghdr structure, or the
flags parameter in recvfrom(), recvmsg(), sendto(), or sendmsg() calls:
-
MSG_CTRUNC
- Control data truncated.
-
MSG_EOR
- Terminates a record (if supported by the protocol).
-
MSG_OOB
- Out-of-band data.
-
MSG_PEEK
- Leave received data in queue.
-
MSG_TRUNC
- Normal data truncated.
-
MSG_WAITALL
- Wait for complete message.
The <sys/socket.h> header defines the following macros:
-
AF_UNIX
- UNIX domain sockets
-
AF_INET
- Internet domain sockets
The <sys/socket.h> header defines the following macros:
-
SHUT_RD
- Disables further receive operations.
-
SHUT_WR
- Disables further send operations.
-
SHUT_RDWR
- Disables further send and receive operations.
The following are declared as functions, and may also be defined as macros:
int accept(int socket, struct sockaddr *address, size_t *address_len);
int bind(int socket, const struct sockaddr *address, size_t address_len);
int connect(int socket, const struct sockaddr *address, size_t address_len);
int getpeername(int socket, struct sockaddr *address, size_t *address_len);
int getsockname(int socket, struct sockaddr *address, size_t *address_len);
int getsockopt(int socket, int level, int option_name, void *option_value, size_t *option_len);
int listen(int socket, int backlog);
ssize_t recv(int socket, void *buffer, size_t length, int flags);
ssize_t recvfrom(int socket, void *buffer, size_t length, int flags, struct sockaddr *address, size_t *address_len);
ssize_t recvmsg(int socket, struct msghdr *message, int flags);
ssize_t send(int socket, const void *message, size_t length, int flags);
ssize_t sendmsg(int socket, const struct msghdr *message, int flags);
ssize_t sendto(int socket, const void *message, size_t length, int flags, const struct sockaddr *dest_addr, size_t dest_len);
int setsockopt(int socket, int level, int option_name, const void *option_value, size_t option_len);
int shutdown(int socket, int how);
int socket(int domain, int type, int protocol);
int socketpair(int domain, int type, int protocol, int socket_vector[2]);
|