Group PJ_SOCK¶
-
group
PJ_SOCK
The PJLIB socket abstraction layer is a thin and very portable abstraction for socket API. It provides API similar to BSD socket API. The abstraction is needed because BSD socket API is not always available on all platforms, therefore it wouldn’t be possible to create a trully portable network programs unless we provide such abstraction.
Applications can use this API directly in their application, just as they would when using traditional BSD socket API, provided they call pj_init() first.
Examples¶
For some examples on how to use the socket API, please see:
Test: Socket
Test: Socket Select()
Test: Socket Performance
Defines
-
PJ_AF_LOCAL
¶ POSIX name for AF_UNIX
-
pj_AF_UNSPEC
()¶ Get PJ_AF_UNSPEC value
-
pj_AF_UNIX
()¶ Get PJ_AF_UNIX value.
-
pj_AF_INET
()¶ Get PJ_AF_INET value.
-
pj_AF_INET6
()¶ Get PJ_AF_INET6 value.
-
pj_AF_PACKET
()¶ Get PJ_AF_PACKET value.
-
pj_AF_IRDA
()¶ Get PJ_AF_IRDA value.
-
pj_SOCK_STREAM
()¶ Get PJ_SOCK_STREAM constant
-
pj_SOCK_DGRAM
()¶ Get PJ_SOCK_DGRAM constant
-
pj_SOCK_RAW
()¶ Get PJ_SOCK_RAW constant
-
pj_SOCK_RDM
()¶ Get PJ_SOCK_RDM constant
-
pj_SOL_SOCKET
()¶ Get PJ_SOL_SOCKET constant
-
pj_SOL_TCP
()¶ Get PJ_SOL_TCP constant
-
pj_SOL_UDP
()¶ Get PJ_SOL_UDP constant
-
pj_SOL_IPV6
()¶ Get PJ_SOL_IPV6 constant
-
pj_IPTOS_LOWDELAY
()¶ Get PJ_IPTOS_LOWDELAY constant
-
pj_IPTOS_THROUGHPUT
()¶ Get PJ_IPTOS_THROUGHPUT constant
-
pj_IPTOS_RELIABILITY
()¶ Get PJ_IPTOS_RELIABILITY constant
-
pj_IPTOS_MINCOST
()¶ Get PJ_IPTOS_MINCOST constant
-
pj_SO_TYPE
()¶ Get PJ_SO_TYPE constant
-
pj_SO_RCVBUF
()¶ Get PJ_SO_RCVBUF constant
-
pj_SO_SNDBUF
()¶ Get PJ_SO_SNDBUF constant
-
pj_TCP_NODELAY
()¶ Get PJ_TCP_NODELAY constant
-
pj_SO_REUSEADDR
()¶ Get PJ_SO_REUSEADDR constant
-
pj_SO_NOSIGPIPE
()¶ Get PJ_SO_NOSIGPIPE constant
-
pj_SO_PRIORITY
()¶ Get PJ_SO_PRIORITY constant
-
pj_IP_MULTICAST_IF
()¶ Get PJ_IP_MULTICAST_IF constant
-
pj_IP_MULTICAST_TTL
()¶ Get PJ_IP_MULTICAST_TTL constant
-
pj_IP_MULTICAST_LOOP
()¶ Get PJ_IP_MULTICAST_LOOP constant
-
pj_IP_ADD_MEMBERSHIP
()¶ Get PJ_IP_ADD_MEMBERSHIP constant
-
pj_IP_DROP_MEMBERSHIP
()¶ Get PJ_IP_DROP_MEMBERSHIP constant
-
pj_MSG_OOB
()¶ Get PJ_MSG_OOB constant
-
pj_MSG_PEEK
()¶ Get PJ_MSG_PEEK constant
-
pj_MSG_DONTROUTE
()¶ Get PJ_MSG_DONTROUTE constant
-
PJ_INADDR_ANY
¶ Address to accept any incoming messages.
-
PJ_INADDR_NONE
¶ Address indicating an error return
-
PJ_INADDR_BROADCAST
¶ Address to send to all hosts.
-
PJ_SOMAXCONN
¶ Maximum length specifiable by pj_sock_listen(). If the build system doesn’t override this value, then the lowest denominator (five, in Win32 systems) will be used.
-
PJ_INVALID_SOCKET
¶ Constant for invalid socket returned by pj_sock_socket() and pj_sock_accept().
-
PJ_INET_ADDRSTRLEN
¶ Maximum length of text representation of an IPv4 address.
-
PJ_INET6_ADDRSTRLEN
¶ Maximum length of text representation of an IPv6 address.
-
PJ_SOCKADDR_IN_SIN_ZERO_LEN
¶ The size of sin_zero field in pj_sockaddr_in structure. Most OSes use 8, but others such as the BSD TCP/IP stack in eCos uses 24.
-
PJ_IN6ADDR_ANY_INIT
¶ Initializer value for pj_in6_addr.
-
PJ_IN6ADDR_LOOPBACK_INIT
¶ Initializer value for pj_in6_addr.
Enums
-
enum
pj_socket_sd_type
¶ Flag to be specified in pj_sock_shutdown().
Values:
-
enumerator
PJ_SD_RECEIVE
¶ No more receive.
-
enumerator
PJ_SHUT_RD
¶ Alias for SD_RECEIVE.
-
enumerator
PJ_SD_SEND
¶ No more sending.
-
enumerator
PJ_SHUT_WR
¶ Alias for SD_SEND.
-
enumerator
PJ_SD_BOTH
¶ No more send and receive.
-
enumerator
PJ_SHUT_RDWR
¶ Alias for SD_BOTH.
-
enumerator
Functions
-
pj_uint16_t
pj_ntohs
(pj_uint16_t netshort)¶ Convert 16-bit value from network byte order to host byte order.
- Parameters
netshort – 16-bit network value.
- Returns
16-bit host value.
-
pj_uint16_t
pj_htons
(pj_uint16_t hostshort)¶ Convert 16-bit value from host byte order to network byte order.
- Parameters
hostshort – 16-bit host value.
- Returns
16-bit network value.
-
pj_uint32_t
pj_ntohl
(pj_uint32_t netlong)¶ Convert 32-bit value from network byte order to host byte order.
- Parameters
netlong – 32-bit network value.
- Returns
32-bit host value.
-
pj_uint32_t
pj_htonl
(pj_uint32_t hostlong)¶ Convert 32-bit value from host byte order to network byte order.
- Parameters
hostlong – 32-bit host value.
- Returns
32-bit network value.
-
char *
pj_inet_ntoa
(pj_in_addr inaddr)¶ Convert an Internet host address given in network byte order to string in standard numbers and dots notation.
- Parameters
inaddr – The host address.
- Returns
The string address.
-
int
pj_inet_aton
(const pj_str_t *cp, struct pj_in_addr *inp)¶ This function converts the Internet host address cp from the standard numbers-and-dots notation into binary data and stores it in the structure that inp points to.
- Parameters
cp – IP address in standard numbers-and-dots notation.
inp – Structure that holds the output of the conversion.
- Returns
nonzero if the address is valid, zero if not.
-
pj_status_t
pj_inet_pton
(int af, const pj_str_t *src, void *dst)¶ This function converts an address in its standard text presentation form into its numeric binary form. It supports both IPv4 and IPv6 address conversion.
- Parameters
af – Specify the family of the address. The PJ_AF_INET and PJ_AF_INET6 address families shall be supported.
src – Points to the string being passed in.
dst – Points to a buffer into which the function stores the numeric address; this shall be large enough to hold the numeric address (32 bits for PJ_AF_INET, 128 bits for PJ_AF_INET6).
- Returns
PJ_SUCCESS if conversion was successful.
-
pj_status_t
pj_inet_ntop
(int af, const void *src, char *dst, int size)¶ This function converts a numeric address into a text string suitable for presentation. It supports both IPv4 and IPv6 address conversion.
- Parameters
af – Specify the family of the address. This can be PJ_AF_INET or PJ_AF_INET6.
src – Points to a buffer holding an IPv4 address if the af argument is PJ_AF_INET, or an IPv6 address if the af argument is PJ_AF_INET6; the address must be in network byte order.
dst – Points to a buffer where the function stores the resulting text string; it shall not be NULL.
size – Specifies the size of this buffer, which shall be large enough to hold the text string (PJ_INET_ADDRSTRLEN characters for IPv4, PJ_INET6_ADDRSTRLEN characters for IPv6).
- Returns
PJ_SUCCESS if conversion was successful.
-
char *
pj_inet_ntop2
(int af, const void *src, char *dst, int size)¶ Converts numeric address into its text string representation.
- Parameters
af – Specify the family of the address. This can be PJ_AF_INET or PJ_AF_INET6.
src – Points to a buffer holding an IPv4 address if the af argument is PJ_AF_INET, or an IPv6 address if the af argument is PJ_AF_INET6; the address must be in network byte order.
dst – Points to a buffer where the function stores the resulting text string; it shall not be NULL.
size – Specifies the size of this buffer, which shall be large enough to hold the text string (PJ_INET_ADDRSTRLEN characters for IPv4, PJ_INET6_ADDRSTRLEN characters for IPv6).
- Returns
The address string or NULL if failed.
-
char *
pj_sockaddr_print
(const pj_sockaddr_t *addr, char *buf, int size, unsigned flags)¶ Print socket address.
- Parameters
addr – The socket address.
buf – Text buffer.
size – Size of buffer.
flags – Bitmask combination of these value:
1: port number is included.
2: square bracket is included for IPv6 address.
- Returns
The address string.
-
pj_in_addr
pj_inet_addr
(const pj_str_t *cp)¶ Convert address string with numbers and dots to binary IP address.
- Remark
This is an obsolete interface to pj_inet_aton(); it is obsolete because -1 is a valid address (255.255.255.255), and pj_inet_aton() provides a cleaner way to indicate error return.
- Parameters
cp – The IP address in numbers and dots notation.
- Returns
If success, the IP address is returned in network byte order. If failed, PJ_INADDR_NONE will be returned.
-
pj_in_addr
pj_inet_addr2
(const char *cp)¶ Convert address string with numbers and dots to binary IP address.
- Remark
This is an obsolete interface to pj_inet_aton(); it is obsolete because -1 is a valid address (255.255.255.255), and pj_inet_aton() provides a cleaner way to indicate error return.
- Parameters
cp – The IP address in numbers and dots notation.
- Returns
If success, the IP address is returned in network byte order. If failed, PJ_INADDR_NONE will be returned.
-
pj_status_t
pj_sockaddr_in_init
(pj_sockaddr_in *addr, const pj_str_t *cp, pj_uint16_t port)¶ Initialize IPv4 socket address based on the address and port info. The string address may be in a standard numbers and dots notation or may be a hostname. If hostname is specified, then the function will resolve the host into the IP address.
- Parameters
addr – The IP socket address to be set.
cp – The address string, which can be in a standard dotted numbers or a hostname to be resolved.
port – The port number, in host byte order.
- Returns
Zero on success.
-
pj_status_t
pj_sockaddr_init
(int af, pj_sockaddr *addr, const pj_str_t *cp, pj_uint16_t port)¶ Initialize IP socket address based on the address and port info. The string address may be in a standard numbers and dots notation or may be a hostname. If hostname is specified, then the function will resolve the host into the IP address.
- Parameters
af – Internet address family.
addr – The IP socket address to be set.
cp – The address string, which can be in a standard dotted numbers or a hostname to be resolved.
port – The port number, in host byte order.
- Returns
Zero on success.
-
int
pj_sockaddr_cmp
(const pj_sockaddr_t *addr1, const pj_sockaddr_t *addr2)¶ Compare two socket addresses.
- Parameters
addr1 – First address.
addr2 – Second address.
- Returns
Zero on equal, -1 if addr1 is less than addr2, and +1 if addr1 is more than addr2.
-
void *
pj_sockaddr_get_addr
(const pj_sockaddr_t *addr)¶ Get pointer to the address part of a socket address.
- Parameters
addr – Socket address.
- Returns
Pointer to address part (sin_addr or sin6_addr, depending on address family)
-
pj_bool_t
pj_sockaddr_has_addr
(const pj_sockaddr_t *addr)¶ Check that a socket address contains a non-zero address part.
- Parameters
addr – Socket address.
- Returns
Non-zero if address is set to non-zero.
-
unsigned
pj_sockaddr_get_addr_len
(const pj_sockaddr_t *addr)¶ Get the address part length of a socket address, based on its address family. For PJ_AF_INET, the length will be sizeof(pj_in_addr), and for PJ_AF_INET6, the length will be sizeof(pj_in6_addr).
- Parameters
addr – Socket address.
- Returns
Length in bytes.
-
unsigned
pj_sockaddr_get_len
(const pj_sockaddr_t *addr)¶ Get the socket address length, based on its address family. For PJ_AF_INET, the length will be sizeof(pj_sockaddr_in), and for PJ_AF_INET6, the length will be sizeof(pj_sockaddr_in6).
- Parameters
addr – Socket address.
- Returns
Length in bytes.
-
void
pj_sockaddr_copy_addr
(pj_sockaddr *dst, const pj_sockaddr *src)¶ Copy only the address part (sin_addr/sin6_addr) of a socket address.
- See
()
- Parameters
dst – Destination socket address.
src – Source socket address.
-
void
pj_sockaddr_cp
(pj_sockaddr_t *dst, const pj_sockaddr_t *src)¶ Copy socket address. This will copy the whole structure depending on the address family of the source socket address.
- See
()
- Parameters
dst – Destination socket address.
src – Source socket address.
-
pj_in_addr
pj_sockaddr_in_get_addr
(const pj_sockaddr_in *addr)¶ Get the IP address of an IPv4 socket address. The address is returned as 32bit value in host byte order.
- Parameters
addr – The IP socket address.
- Returns
32bit address, in host byte order.
-
void
pj_sockaddr_in_set_addr
(pj_sockaddr_in *addr, pj_uint32_t hostaddr)¶ Set the IP address of an IPv4 socket address.
- Parameters
addr – The IP socket address.
hostaddr – The host address, in host byte order.
-
pj_status_t
pj_sockaddr_in_set_str_addr
(pj_sockaddr_in *addr, const pj_str_t *cp)¶ Set the IP address of an IP socket address from string address, with resolving the host if necessary. The string address may be in a standard numbers and dots notation or may be a hostname. If hostname is specified, then the function will resolve the host into the IP address.
- Parameters
addr – The IP socket address to be set.
cp – The address string, which can be in a standard dotted numbers or a hostname to be resolved.
- Returns
PJ_SUCCESS on success.
-
pj_status_t
pj_sockaddr_set_str_addr
(int af, pj_sockaddr *addr, const pj_str_t *cp)¶ Set the IP address of an IPv4 or IPv6 socket address from string address, with resolving the host if necessary. The string address may be in a standard IPv6 or IPv6 address or may be a hostname. If hostname is specified, then the function will resolve the host into the IP address according to the address family.
- Parameters
af – Address family.
addr – The IP socket address to be set.
cp – The address string, which can be in a standard IP numbers (IPv4 or IPv6) or a hostname to be resolved.
- Returns
PJ_SUCCESS on success.
-
pj_uint16_t
pj_sockaddr_get_port
(const pj_sockaddr_t *addr)¶ Get the port number of a socket address, in host byte order. This function can be used for both IPv4 and IPv6 socket address.
- Parameters
addr – Socket address.
- Returns
Port number, in host byte order.
-
pj_uint16_t
pj_sockaddr_in_get_port
(const pj_sockaddr_in *addr)¶ Get the transport layer port number of an Internet socket address. The port is returned in host byte order.
- Parameters
addr – The IP socket address.
- Returns
Port number, in host byte order.
-
pj_status_t
pj_sockaddr_set_port
(pj_sockaddr *addr, pj_uint16_t hostport)¶ Set the port number of an Internet socket address.
- Parameters
addr – The socket address.
hostport – The port number, in host byte order.
-
void
pj_sockaddr_in_set_port
(pj_sockaddr_in *addr, pj_uint16_t hostport)¶ Set the port number of an IPv4 socket address.
- Parameters
addr – The IP socket address.
hostport – The port number, in host byte order.
-
pj_status_t
pj_sockaddr_parse
(int af, unsigned options, const pj_str_t *str, pj_sockaddr *addr)¶ Parse string containing IP address and optional port into socket address, possibly also with address family detection. This function supports both IPv4 and IPv6 parsing, however IPv6 parsing may only be done if IPv6 is enabled during compilation.
This function supports parsing several formats. Sample IPv4 inputs and their default results::
”10.0.0.1:80”: address 10.0.0.1 and port 80.
”10.0.0.1”: address 10.0.0.1 and port zero.
”10.0.0.1:”: address 10.0.0.1 and port zero.
”10.0.0.1:0”: address 10.0.0.1 and port zero.
”:80”: address 0.0.0.0 and port 80.
”:”: address 0.0.0.0 and port 0.
”localhost”: address 127.0.0.1 and port 0.
”localhost:”: address 127.0.0.1 and port 0.
”localhost:80”: address 127.0.0.1 and port 80.
Sample IPv6 inputs and their default results:
”[fec0::01]:80”: address fec0::01 and port 80
”[fec0::01]”: address fec0::01 and port 0
”[fec0::01]:”: address fec0::01 and port 0
”[fec0::01]:0”: address fec0::01 and port 0
”fec0::01”: address fec0::01 and port 0
”fec0::01:80”: address fec0::01:80 and port 0
”::”: address zero (::) and port 0
”[::]”: address zero (::) and port 0
”[::]:”: address zero (::) and port 0
”:::”: address zero (::) and port 0
”[::]:80”: address zero (::) and port 0
”:::80”: address zero (::) and port 80
Note: when the IPv6 socket address contains port number, the IP part of the socket address should be enclosed with square brackets, otherwise the port number will be included as part of the IP address (see “fec0::01:80” example above).
- Parameters
af – Optionally specify the address family to be used. If the address family is to be deducted from the input, specify pj_AF_UNSPEC() here. Other supported values are pj_AF_INET() and pj_AF_INET6()
options – Additional options to assist the parsing, must be zero for now.
str – The input string to be parsed.
addr – Pointer to store the result.
- Returns
PJ_SUCCESS if the parsing is successful.
-
pj_status_t
pj_sockaddr_parse2
(int af, unsigned options, const pj_str_t *str, pj_str_t *hostpart, pj_uint16_t *port, int *raf)¶ This function is similar to pj_sockaddr_parse(), except that it will not convert the hostpart into IP address (thus possibly resolving the hostname into a pj_sockaddr.
Unlike pj_sockaddr_parse(), this function has a limitation that if port number is specified in an IPv6 input string, the IP part of the IPv6 socket address MUST be enclosed in square brackets, otherwise the port number will be considered as part of the IPv6 IP address.
- Parameters
af – Optionally specify the address family to be used. If the address family is to be deducted from the input, specify pj_AF_UNSPEC() here. Other supported values are pj_AF_INET() and pj_AF_INET6()
options – Additional options to assist the parsing, must be zero for now.
str – The input string to be parsed.
hostpart – Optional pointer to store the host part of the socket address, with any brackets removed.
port – Optional pointer to store the port number. If port number is not found, this will be set to zero upon return.
raf – Optional pointer to store the detected address family of the input address.
- Returns
PJ_SUCCESS if the parsing is successful.
-
const pj_str_t *
pj_gethostname
(void)¶ Get system’s host name.
- Returns
The hostname, or empty string if the hostname can not be identified.
-
pj_in_addr
pj_gethostaddr
(void)¶ Get host’s IP address, which the the first IP address that is resolved from the hostname.
- Returns
The host’s IP address, PJ_INADDR_NONE if the host IP address can not be identified.
-
pj_status_t
pj_sock_socket
(int family, int type, int protocol, pj_sock_t *sock)¶ Create new socket/endpoint for communication.
- Parameters
family – Specifies a communication domain; this selects the protocol family which will be used for communication.
type – The socket has the indicated type, which specifies the communication semantics.
protocol – Specifies a particular protocol to be used with the socket. Normally only a single protocol exists to support a particular socket type within a given protocol family, in which a case protocol can be specified as 0.
sock – New socket descriptor, or PJ_INVALID_SOCKET on error.
- Returns
Zero on success.
-
pj_status_t
pj_sock_close
(pj_sock_t sockfd)¶ Close the socket descriptor.
- Parameters
sockfd – The socket descriptor.
- Returns
Zero on success.
-
pj_status_t
pj_sock_bind
(pj_sock_t sockfd, const pj_sockaddr_t *my_addr, int addrlen)¶ This function gives the socket sockfd the local address my_addr. my_addr is addrlen bytes long. Traditionally, this is called assigning a name to a socket. When a socket is created with pj_sock_socket(), it exists in a name space (address family) but has no name assigned.
- Parameters
sockfd – The socket desriptor.
my_addr – The local address to bind the socket to.
addrlen – The length of the address.
- Returns
Zero on success.
-
pj_status_t
pj_sock_bind_in
(pj_sock_t sockfd, pj_uint32_t addr, pj_uint16_t port)¶ Bind the IP socket sockfd to the given address and port.
- Parameters
sockfd – The socket descriptor.
addr – Local address to bind the socket to, in host byte order.
port – The local port to bind the socket to, in host byte order.
- Returns
Zero on success.
-
pj_status_t
pj_sock_listen
(pj_sock_t sockfd, int backlog)¶ Listen for incoming connection. This function only applies to connection oriented sockets (such as PJ_SOCK_STREAM or PJ_SOCK_SEQPACKET), and it indicates the willingness to accept incoming connections.
- Parameters
sockfd – The socket descriptor.
backlog – Defines the maximum length the queue of pending connections may grow to.
- Returns
Zero on success.
-
pj_status_t
pj_sock_accept
(pj_sock_t serverfd, pj_sock_t *newsock, pj_sockaddr_t *addr, int *addrlen)¶ Accept new connection on the specified connection oriented server socket.
- Parameters
serverfd – The server socket.
newsock – New socket on success, of PJ_INVALID_SOCKET if failed.
addr – A pointer to sockaddr type. If the argument is not NULL, it will be filled by the address of connecting entity.
addrlen – Initially specifies the length of the address, and upon return will be filled with the exact address length.
- Returns
Zero on success, or the error number.
-
pj_status_t
pj_sock_connect
(pj_sock_t sockfd, const pj_sockaddr_t *serv_addr, int addrlen)¶ The file descriptor sockfd must refer to a socket. If the socket is of type PJ_SOCK_DGRAM then the serv_addr address is the address to which datagrams are sent by default, and the only address from which datagrams are received. If the socket is of type PJ_SOCK_STREAM or PJ_SOCK_SEQPACKET, this call attempts to make a connection to another socket. The other socket is specified by serv_addr, which is an address (of length addrlen) in the communications space of the socket. Each communications space interprets the serv_addr parameter in its own way.
- Parameters
sockfd – The socket descriptor.
serv_addr – Server address to connect to.
addrlen – The length of server address.
- Returns
Zero on success.
-
pj_status_t
pj_sock_getpeername
(pj_sock_t sockfd, pj_sockaddr_t *addr, int *namelen)¶ Return the address of peer which is connected to socket sockfd.
- Parameters
sockfd – The socket descriptor.
addr – Pointer to sockaddr structure to which the address will be returned.
namelen – Initially the length of the addr. Upon return the value will be set to the actual length of the address.
- Returns
Zero on success.
-
pj_status_t
pj_sock_getsockname
(pj_sock_t sockfd, pj_sockaddr_t *addr, int *namelen)¶ Return the current name of the specified socket.
- Parameters
sockfd – The socket descriptor.
addr – Pointer to sockaddr structure to which the address will be returned.
namelen – Initially the length of the addr. Upon return the value will be set to the actual length of the address.
- Returns
Zero on success.
-
pj_status_t
pj_sock_getsockopt
(pj_sock_t sockfd, pj_uint16_t level, pj_uint16_t optname, void *optval, int *optlen)¶ Get socket option associated with a socket. Options may exist at multiple protocol levels; they are always present at the uppermost socket level.
- Parameters
sockfd – The socket descriptor.
level – The level which to get the option from.
optname – The option name.
optval – Identifies the buffer which the value will be returned.
optlen – Initially contains the length of the buffer, upon return will be set to the actual size of the value.
- Returns
Zero on success.
-
pj_status_t
pj_sock_setsockopt
(pj_sock_t sockfd, pj_uint16_t level, pj_uint16_t optname, const void *optval, int optlen)¶ Manipulate the options associated with a socket. Options may exist at multiple protocol levels; they are always present at the uppermost socket level.
- Parameters
sockfd – The socket descriptor.
level – The level which to get the option from.
optname – The option name.
optval – Identifies the buffer which contain the value.
optlen – The length of the value.
- Returns
PJ_SUCCESS or the status code.
-
pj_status_t
pj_sock_recv
(pj_sock_t sockfd, void *buf, pj_ssize_t *len, unsigned flags)¶ Receives data stream or message coming to the specified socket.
- Parameters
sockfd – The socket descriptor.
buf – The buffer to receive the data or message.
len – On input, the length of the buffer. On return, contains the length of data received.
flags – Flags (such as pj_MSG_PEEK()).
- Returns
PJ_SUCCESS or the error code.
-
pj_status_t
pj_sock_recvfrom
(pj_sock_t sockfd, void *buf, pj_ssize_t *len, unsigned flags, pj_sockaddr_t *from, int *fromlen)¶ Receives data stream or message coming to the specified socket.
- Parameters
sockfd – The socket descriptor.
buf – The buffer to receive the data or message.
len – On input, the length of the buffer. On return, contains the length of data received.
flags – Flags (such as pj_MSG_PEEK()).
from – If not NULL, it will be filled with the source address of the connection.
fromlen – Initially contains the length of from address, and upon return will be filled with the actual length of the address.
- Returns
PJ_SUCCESS or the error code.
-
pj_status_t
pj_sock_send
(pj_sock_t sockfd, const void *buf, pj_ssize_t *len, unsigned flags)¶ Transmit data to the socket.
- Parameters
sockfd – Socket descriptor.
buf – Buffer containing data to be sent.
len – On input, the length of the data in the buffer. Upon return, it will be filled with the length of data sent.
flags – Flags (such as pj_MSG_DONTROUTE()).
- Returns
PJ_SUCCESS or the status code.
-
pj_status_t
pj_sock_sendto
(pj_sock_t sockfd, const void *buf, pj_ssize_t *len, unsigned flags, const pj_sockaddr_t *to, int tolen)¶ Transmit data to the socket to the specified address.
- Parameters
sockfd – Socket descriptor.
buf – Buffer containing data to be sent.
len – On input, the length of the data in the buffer. Upon return, it will be filled with the length of data sent.
flags – Flags (such as pj_MSG_DONTROUTE()).
to – The address to send.
tolen – The length of the address in bytes.
- Returns
PJ_SUCCESS or the status code.
-
pj_status_t
pj_sock_shutdown
(pj_sock_t sockfd, int how)¶ The shutdown call causes all or part of a full-duplex connection on the socket associated with sockfd to be shut down.
- Parameters
sockfd – The socket descriptor.
how – If how is PJ_SHUT_RD, further receptions will be disallowed. If how is PJ_SHUT_WR, further transmissions will be disallowed. If how is PJ_SHUT_RDWR, further receptions andtransmissions will be disallowed.
- Returns
Zero on success.
Variables
-
const pj_uint16_t
PJ_AF_UNSPEC
¶ Supported address families. APPLICATION MUST USE THESE VALUES INSTEAD OF NORMAL AF_*, BECAUSE THE LIBRARY WILL DO TRANSLATION TO THE NATIVE VALUE.Address family is unspecified.
-
const pj_uint16_t
PJ_AF_UNIX
¶ Unix domain socket.
- See
-
const pj_uint16_t
PJ_AF_INET
¶ Internet IP protocol.
- See
-
const pj_uint16_t
PJ_AF_INET6
¶ IP version 6.
-
const pj_uint16_t
PJ_AF_PACKET
¶ Packet family.
-
const pj_uint16_t
PJ_AF_IRDA
¶ IRDA sockets.
- See
-
const pj_uint16_t
PJ_SOCK_STREAM
¶ Supported types of sockets. APPLICATION MUST USE THESE VALUES INSTEAD OF NORMAL SOCK_*, BECAUSE THE LIBRARY WILL TRANSLATE THE VALUE TO THE NATIVE VALUE.Sequenced, reliable, connection-based byte streams.
-
const pj_uint16_t
PJ_SOCK_DGRAM
¶ Connectionless, unreliable datagrams of fixed maximum lengths.
-
const pj_uint16_t
PJ_SOCK_RAW
¶ Raw protocol interface.
-
const pj_uint16_t
PJ_SOCK_RDM
¶ Reliably-delivered messages.
-
const pj_uint16_t
PJ_SOL_SOCKET
¶ Socket level specified in pj_sock_setsockopt() or pj_sock_getsockopt(). APPLICATION MUST USE THESE VALUES INSTEAD OF NORMAL SOL_*, BECAUSE THE LIBRARY WILL TRANSLATE THE VALUE TO THE NATIVE VALUE.Socket level.
-
const pj_uint16_t
PJ_SOL_IP
¶ IP level.
- See
-
const pj_uint16_t
PJ_SOL_TCP
¶ TCP level.
- See
-
const pj_uint16_t
PJ_SOL_UDP
¶ UDP level.
- See
-
const pj_uint16_t
PJ_SOL_IPV6
¶ IP version 6.
-
const pj_uint16_t
PJ_IP_TOS
¶ IP_TOS optname in setsockopt().
- See
-
const pj_uint16_t
PJ_IPTOS_LOWDELAY
¶ Minimize delays.
-
const pj_uint16_t
PJ_IPTOS_THROUGHPUT
¶ Optimize throughput.
-
const pj_uint16_t
PJ_IPTOS_RELIABILITY
¶ Optimize for reliability.
-
const pj_uint16_t
PJ_IPTOS_MINCOST
¶ “filler data” where slow transmission does’t matter.
-
const pj_uint16_t
PJ_SO_TYPE
¶ Values to be specified as
optname
when calling pj_sock_setsockopt() or pj_sock_getsockopt().Socket type.- See
-
const pj_uint16_t
PJ_SO_RCVBUF
¶ Buffer size for receive.
-
const pj_uint16_t
PJ_SO_SNDBUF
¶ Buffer size for send.
-
const pj_uint16_t
PJ_TCP_NODELAY
¶ Disables the Nagle algorithm for send coalescing.
-
const pj_uint16_t
PJ_SO_REUSEADDR
¶ Allows the socket to be bound to an address that is already in use.
-
const pj_uint16_t
PJ_SO_NOSIGPIPE
¶ Do not generate SIGPIPE.
-
const pj_uint16_t
PJ_SO_PRIORITY
¶ Set the protocol-defined priority for all packets to be sent on socket.
-
const pj_uint16_t
PJ_IP_MULTICAST_IF
¶ IP multicast interface.
-
const pj_uint16_t
PJ_IP_MULTICAST_TTL
¶ IP multicast ttl.
-
const pj_uint16_t
PJ_IP_MULTICAST_LOOP
¶ IP multicast loopback.
-
const pj_uint16_t
PJ_IP_ADD_MEMBERSHIP
¶ Add an IP group membership.
-
const pj_uint16_t
PJ_IP_DROP_MEMBERSHIP
¶ Drop an IP group membership.
-
const int
PJ_MSG_OOB
¶ Out-of-band messages.
- See
-
const int
PJ_MSG_PEEK
¶ Peek, don’t remove from buffer.
-
const int
PJ_MSG_DONTROUTE
¶ Don’t route.
-
struct
pj_in_addr
¶ - #include <sock.h>
This structure describes Internet address.
-
struct
pj_sockaddr_in
¶ - #include <sock.h>
This structure describes Internet socket address. If PJ_SOCKADDR_HAS_LEN is not zero, then sin_zero_len member is added to this struct. As far the application is concerned, the value of this member will always be zero. Internally, PJLIB may modify the value before calling OS socket API, and reset the value back to zero before returning the struct to application.
Forward declaration.
-
union
pj_in6_addr
¶ - #include <sock.h>
This structure describes IPv6 address.
-
struct
pj_sockaddr_in6
¶ - #include <sock.h>
This structure describes IPv6 socket address. If PJ_SOCKADDR_HAS_LEN is not zero, then sin_zero_len member is added to this struct. As far the application is concerned, the value of this member will always be zero. Internally, PJLIB may modify the value before calling OS socket API, and reset the value back to zero before returning the struct to application.
-
struct
pj_addr_hdr
¶ - #include <sock.h>
This structure describes common attributes found in transport addresses. If PJ_SOCKADDR_HAS_LEN is not zero, then sa_zero_len member is added to this struct. As far the application is concerned, the value of this member will always be zero. Internally, PJLIB may modify the value before calling OS socket API, and reset the value back to zero before returning the struct to application.
-
union
pj_sockaddr
¶ - #include <sock.h>
This union describes a generic socket address.
Public Members
-
pj_addr_hdr
addr
¶ Generic transport address.
-
pj_sockaddr_in
ipv4
¶ IPv4 transport address.
-
pj_sockaddr_in6
ipv6
¶ IPv6 transport address.
-
pj_addr_hdr
-
struct
pj_ip_mreq
¶ - #include <sock.h>
This structure provides multicast group information for IPv4 addresses.