#include <sys/socket.h> UNIX

Posted on 2012-03-16 01:06  无忧consume  阅读(1877)  评论(0编辑  收藏  举报

NAME

sys/socket.h - Internet Protocol family

SYNOPSIS

 #include <sys/socket.h> 

DESCRIPTION

<sys/socket.h> makes available a type, socklen_t, which is an unsigned opaque integral type of length of at least 32 bits. To forestall portability problems, it is recommended that applications should not use values larger than 232 - 1.

The <sys/socket.h> header defines the unsigned integral type sa_family_t.

The <sys/socket.h> header defines the sockaddr structure that includes at least 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 at least the following members:
 void *msg_name optional address socklen_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 socklen_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 at least the following members:
 socklen_t cmsg_len data byte count, including the cmsghdr 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 system documentation should specify the cmsg_type definitions for the supported protocols.

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 whencmsg_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 cmsghdrstructure.
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 thismsghdr 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 at least 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, with distinct integral values:
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, with distinct integral values, for use as the option_name argument in getsockopt() orsetsockopt() calls:

SO_ACCEPTCONN
Socket is accepting connections.
SO_BROADCAST
Transmission of broadcast messages is supported.
SO_DEBUG
Debugging information is being recorded.
SO_DONTROUTE
bypass normal routing
SO_ERROR
Socket error status.
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_RCVBUF
Receive buffer size.
SO_RCVLOWAT
receive "low water mark"
SO_RCVTIMEO
receive timeout
SO_REUSEADDR
Reuse of local addresses is supported.
SO_SNDBUF
Send buffer size.
SO_SNDLOWAT
send "low water mark"
SO_SNDTIMEO
send timeout
SO_TYPE
Socket type.

The <sys/socket.h> header defines the following macros, with distinct integral values, for use as the valid values for the msg_flags field in the msghdrstructure, or the flags parameter in recvfrom()recvmsg()sendto() or sendmsg() calls:

MSG_CTRUNC
Control data truncated.
MSG_DONTROUTE
Send without using routing tables.
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, with distinct integral values:

AF_UNIX
UNIX domain sockets
AF_UNSPEC
Unspecified
AF_INET
Internet domain sockets

The <sys/socket.h> header defines the following macros, with distinct integral values:

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, socklen_t *address_len); int bind(int socket, const struct sockaddr *address, socklen_t address_len); int connect(int socket, const struct sockaddr *address, socklen_t address_len); int getpeername(int socket, struct sockaddr *address, socklen_t *address_len); int getsockname(int socket, struct sockaddr *address, socklen_t *address_len); int getsockopt(int socket, int level, int option_name, void *option_value, socklen_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, socklen_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, socklen_t dest_len); int setsockopt(int socket, int level, int option_name, const void *option_value, socklen_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]); 

SEE ALSO

accept()bind()connect()getpeername()getsockname()getsockopt()listen()recv()recvfrom()recvmsg()send()sendmsg()sendto(),setsockopt()shutdown()socket()socketpair().

Copyright © 2024 无忧consume
Powered by .NET 9.0 on Kubernetes