Home --> Documentations --> PJLIB Reference
|
#define | PJ_AF_LOCAL PJ_AF_UNIX; |
|
#define | pj_AF_UNSPEC() PJ_AF_UNSPEC |
|
#define | pj_AF_UNIX() PJ_AF_UNIX |
|
#define | pj_AF_INET() PJ_AF_INET |
|
#define | pj_AF_INET6() PJ_AF_INET6 |
|
#define | pj_AF_PACKET() PJ_AF_PACKET |
|
#define | pj_AF_IRDA() PJ_AF_IRDA |
|
#define | pj_SOCK_STREAM() PJ_SOCK_STREAM |
|
#define | pj_SOCK_DGRAM() PJ_SOCK_DGRAM |
|
#define | pj_SOCK_RAW() PJ_SOCK_RAW |
|
#define | pj_SOCK_RDM() PJ_SOCK_RDM |
|
#define | pj_SOL_SOCKET() PJ_SOL_SOCKET |
|
#define | pj_SOL_IP() PJ_SOL_IP |
|
#define | pj_SOL_TCP() PJ_SOL_TCP |
|
#define | pj_SOL_UDP() PJ_SOL_UDP |
|
#define | pj_SOL_IPV6() PJ_SOL_IPV6 |
|
#define | pj_IP_TOS() PJ_IP_TOS |
|
#define | pj_IPTOS_LOWDELAY() PJ_IP_TOS_LOWDELAY |
|
#define | pj_IPTOS_THROUGHPUT() PJ_IP_TOS_THROUGHPUT |
|
#define | pj_IPTOS_RELIABILITY() PJ_IP_TOS_RELIABILITY |
|
#define | pj_IPTOS_MINCOST() PJ_IP_TOS_MINCOST |
|
#define | pj_IPV6_TCLASS() PJ_IPV6_TCLASS |
|
#define | pj_SO_TYPE() PJ_SO_TYPE |
|
#define | pj_SO_RCVBUF() PJ_SO_RCVBUF |
|
#define | pj_SO_SNDBUF() PJ_SO_SNDBUF |
|
#define | pj_TCP_NODELAY() PJ_TCP_NODELAY |
|
#define | pj_SO_REUSEADDR() PJ_SO_REUSEADDR |
|
#define | pj_SO_NOSIGPIPE() PJ_SO_NOSIGPIPE |
|
#define | pj_SO_PRIORITY() PJ_SO_PRIORITY |
|
#define | pj_IP_MULTICAST_IF() PJ_IP_MULTICAST_IF |
|
#define | pj_IP_MULTICAST_TTL() PJ_IP_MULTICAST_TTL |
|
#define | pj_IP_MULTICAST_LOOP() PJ_IP_MULTICAST_LOOP |
|
#define | pj_IP_ADD_MEMBERSHIP() PJ_IP_ADD_MEMBERSHIP |
|
#define | pj_IP_DROP_MEMBERSHIP() PJ_IP_DROP_MEMBERSHIP |
|
#define | pj_MSG_OOB() PJ_MSG_OOB |
|
#define | pj_MSG_PEEK() PJ_MSG_PEEK |
|
#define | pj_MSG_DONTROUTE() PJ_MSG_DONTROUTE |
|
#define | PJ_INADDR_ANY ((pj_uint32_t)0) |
|
#define | PJ_INADDR_NONE ((pj_uint32_t)0xffffffff) |
|
#define | PJ_INADDR_BROADCAST ((pj_uint32_t)0xffffffff) |
|
#define | PJ_SOMAXCONN 5 |
|
#define | PJ_INVALID_SOCKET (-1) |
|
#define | PJ_INET_ADDRSTRLEN 16 |
|
#define | PJ_INET6_ADDRSTRLEN 46 |
|
#define | PJ_SOCKADDR_IN_SIN_ZERO_LEN 8 |
|
#define | PJ_IN6ADDR_ANY_INIT { { { 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 } } } |
|
#define | PJ_IN6ADDR_LOOPBACK_INIT { { { 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1 } } } |
|
|
pj_uint16_t | pj_ntohs (pj_uint16_t netshort) |
|
pj_uint16_t | pj_htons (pj_uint16_t hostshort) |
|
pj_uint32_t | pj_ntohl (pj_uint32_t netlong) |
|
pj_uint32_t | pj_htonl (pj_uint32_t hostlong) |
|
char * | pj_inet_ntoa (pj_in_addr inaddr) |
|
int | pj_inet_aton (const pj_str_t *cp, pj_in_addr *inp) |
|
pj_status_t | pj_inet_pton (int af, const pj_str_t *src, void *dst) |
|
pj_status_t | pj_inet_ntop (int af, const void *src, char *dst, int size) |
|
char * | pj_inet_ntop2 (int af, const void *src, char *dst, int size) |
|
char * | pj_sockaddr_print (const pj_sockaddr_t *addr, char *buf, int size, unsigned flags) |
|
pj_in_addr | pj_inet_addr (const pj_str_t *cp) |
|
pj_in_addr | pj_inet_addr2 (const char *cp) |
|
pj_status_t | pj_sockaddr_in_init (pj_sockaddr_in *addr, const pj_str_t *cp, pj_uint16_t port) |
|
pj_status_t | pj_sockaddr_init (int af, pj_sockaddr *addr, const pj_str_t *cp, pj_uint16_t port) |
|
int | pj_sockaddr_cmp (const pj_sockaddr_t *addr1, const pj_sockaddr_t *addr2) |
|
void * | pj_sockaddr_get_addr (const pj_sockaddr_t *addr) |
|
pj_bool_t | pj_sockaddr_has_addr (const pj_sockaddr_t *addr) |
|
unsigned | pj_sockaddr_get_addr_len (const pj_sockaddr_t *addr) |
|
unsigned | pj_sockaddr_get_len (const pj_sockaddr_t *addr) |
|
void | pj_sockaddr_copy_addr (pj_sockaddr *dst, const pj_sockaddr *src) |
|
void | pj_sockaddr_cp (pj_sockaddr_t *dst, const pj_sockaddr_t *src) |
|
pj_status_t | pj_sockaddr_synthesize (int dst_af, pj_sockaddr_t *dst, const pj_sockaddr_t *src) |
|
pj_in_addr | pj_sockaddr_in_get_addr (const pj_sockaddr_in *addr) |
|
void | pj_sockaddr_in_set_addr (pj_sockaddr_in *addr, pj_uint32_t hostaddr) |
|
pj_status_t | pj_sockaddr_in_set_str_addr (pj_sockaddr_in *addr, const pj_str_t *cp) |
|
pj_status_t | pj_sockaddr_set_str_addr (int af, pj_sockaddr *addr, const pj_str_t *cp) |
|
pj_uint16_t | pj_sockaddr_get_port (const pj_sockaddr_t *addr) |
|
pj_uint16_t | pj_sockaddr_in_get_port (const pj_sockaddr_in *addr) |
|
pj_status_t | pj_sockaddr_set_port (pj_sockaddr *addr, pj_uint16_t hostport) |
|
void | pj_sockaddr_in_set_port (pj_sockaddr_in *addr, pj_uint16_t hostport) |
|
pj_status_t | pj_sockaddr_parse (int af, unsigned options, const pj_str_t *str, pj_sockaddr *addr) |
|
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) |
|
const pj_str_t * | pj_gethostname (void) |
|
pj_in_addr | pj_gethostaddr (void) |
|
pj_status_t | pj_sock_socket (int family, int type, int protocol, pj_sock_t *sock) |
|
pj_status_t | pj_sock_close (pj_sock_t sockfd) |
|
pj_status_t | pj_sock_bind (pj_sock_t sockfd, const pj_sockaddr_t *my_addr, int addrlen) |
|
pj_status_t | pj_sock_bind_in (pj_sock_t sockfd, pj_uint32_t addr, pj_uint16_t port) |
|
pj_status_t | pj_sock_bind_random (pj_sock_t sockfd, const pj_sockaddr_t *addr, pj_uint16_t port_range, pj_uint16_t max_try) |
|
pj_status_t | pj_sock_listen (pj_sock_t sockfd, int backlog) |
|
pj_status_t | pj_sock_accept (pj_sock_t serverfd, pj_sock_t *newsock, pj_sockaddr_t *addr, int *addrlen) |
|
pj_status_t | pj_sock_connect (pj_sock_t sockfd, const pj_sockaddr_t *serv_addr, int addrlen) |
|
pj_status_t | pj_sock_getpeername (pj_sock_t sockfd, pj_sockaddr_t *addr, int *namelen) |
|
pj_status_t | pj_sock_getsockname (pj_sock_t sockfd, pj_sockaddr_t *addr, int *namelen) |
|
pj_status_t | pj_sock_getsockopt (pj_sock_t sockfd, pj_uint16_t level, pj_uint16_t optname, void *optval, int *optlen) |
|
pj_status_t | pj_sock_setsockopt (pj_sock_t sockfd, pj_uint16_t level, pj_uint16_t optname, const void *optval, int optlen) |
|
pj_status_t | pj_sock_setsockopt_params (pj_sock_t sockfd, const pj_sockopt_params *params) |
|
pj_status_t | pj_sock_setsockopt_sobuf (pj_sock_t sockfd, pj_uint16_t optname, pj_bool_t auto_retry, unsigned *buf_size) |
|
pj_status_t | pj_sock_recv (pj_sock_t sockfd, void *buf, pj_ssize_t *len, unsigned flags) |
|
pj_status_t | pj_sock_recvfrom (pj_sock_t sockfd, void *buf, pj_ssize_t *len, unsigned flags, pj_sockaddr_t *from, int *fromlen) |
|
pj_status_t | pj_sock_send (pj_sock_t sockfd, const void *buf, pj_ssize_t *len, unsigned flags) |
|
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) |
|
pj_status_t | pj_sock_shutdown (pj_sock_t sockfd, int how) |
|
char * | pj_addr_str_print (const pj_str_t *host_str, int port, char *buf, int size, unsigned flag) |
|
pj_status_t | pj_sock_socketpair (int family, int type, int protocol, pj_sock_t sv[2]) |
|
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:
◆ pj_AF_INET
◆ pj_AF_INET6
◆ pj_AF_IRDA
◆ PJ_AF_LOCAL
◆ pj_AF_PACKET
◆ pj_AF_UNIX
◆ pj_AF_UNSPEC
◆ PJ_IN6ADDR_ANY_INIT
#define PJ_IN6ADDR_ANY_INIT { { { 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 } } } |
Initializer value for pj_in6_addr.
◆ PJ_IN6ADDR_LOOPBACK_INIT
#define PJ_IN6ADDR_LOOPBACK_INIT { { { 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1 } } } |
Initializer value for pj_in6_addr.
◆ PJ_INADDR_ANY
Address to accept any incoming messages.
◆ PJ_INADDR_BROADCAST
Address to send to all hosts.
◆ PJ_INADDR_NONE
Address indicating an error return
◆ PJ_INET6_ADDRSTRLEN
#define PJ_INET6_ADDRSTRLEN 46 |
Maximum length of text representation of an IPv6 address.
◆ PJ_INET_ADDRSTRLEN
#define PJ_INET_ADDRSTRLEN 16 |
Maximum length of text representation of an IPv4 address.
◆ PJ_INVALID_SOCKET
#define PJ_INVALID_SOCKET (-1) |
◆ pj_IP_ADD_MEMBERSHIP
◆ pj_IP_DROP_MEMBERSHIP
◆ pj_IP_MULTICAST_IF
◆ pj_IP_MULTICAST_LOOP
◆ pj_IP_MULTICAST_TTL
◆ pj_IP_TOS
◆ pj_IPTOS_LOWDELAY
#define pj_IPTOS_LOWDELAY |
( |
| ) |
PJ_IP_TOS_LOWDELAY |
◆ pj_IPTOS_MINCOST
#define pj_IPTOS_MINCOST |
( |
| ) |
PJ_IP_TOS_MINCOST |
◆ pj_IPTOS_RELIABILITY
#define pj_IPTOS_RELIABILITY |
( |
| ) |
PJ_IP_TOS_RELIABILITY |
◆ pj_IPTOS_THROUGHPUT
#define pj_IPTOS_THROUGHPUT |
( |
| ) |
PJ_IP_TOS_THROUGHPUT |
◆ pj_IPV6_TCLASS
◆ pj_MSG_DONTROUTE
◆ pj_MSG_OOB
◆ pj_MSG_PEEK
◆ pj_SO_NOSIGPIPE
◆ pj_SO_PRIORITY
◆ pj_SO_RCVBUF
◆ pj_SO_REUSEADDR
◆ pj_SO_SNDBUF
◆ pj_SO_TYPE
◆ pj_SOCK_DGRAM
◆ pj_SOCK_RAW
◆ pj_SOCK_RDM
◆ pj_SOCK_STREAM
◆ PJ_SOCKADDR_IN_SIN_ZERO_LEN
#define PJ_SOCKADDR_IN_SIN_ZERO_LEN 8 |
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_SOL_IP
◆ pj_SOL_IPV6
◆ pj_SOL_SOCKET
◆ pj_SOL_TCP
◆ pj_SOL_UDP
◆ 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_TCP_NODELAY
◆ pj_in6_addr
This structure describes IPv6 address.
◆ pj_in_addr
This structure describes Internet address.
◆ pj_socket_sd_type
Flag to be specified in pj_sock_shutdown().
Enumerator |
---|
PJ_SD_RECEIVE | No more receive.
|
PJ_SHUT_RD | Alias for SD_RECEIVE.
|
PJ_SD_SEND | No more sending.
|
PJ_SHUT_WR | Alias for SD_SEND.
|
PJ_SD_BOTH | No more send and receive.
|
PJ_SHUT_RDWR | Alias for SD_BOTH.
|
◆ pj_addr_str_print()
char * pj_addr_str_print |
( |
const pj_str_t * |
host_str, |
|
|
int |
port, |
|
|
char * |
buf, |
|
|
int |
size, |
|
|
unsigned |
flag |
|
) |
| |
Print socket address string. This method will enclose the address string with square bracket if it's IPv6 address.
- Parameters
-
host_str | The host address string. |
port | The port address. |
buf | Text buffer. |
size | Size of buffer. |
flag | Bitmask combination of these value:
- 1: port number is included.
|
- Returns
- The address string.
◆ pj_gethostaddr()
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_gethostname()
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_htonl()
Convert 32-bit value from host byte order to network byte order.
- Parameters
-
hostlong | 32-bit host value. |
- Returns
- 32-bit network value.
◆ pj_htons()
Convert 16-bit value from host byte order to network byte order.
- Parameters
-
hostshort | 16-bit host value. |
- Returns
- 16-bit network value.
◆ pj_inet_addr()
Convert address string with numbers and dots to binary IP address.
- 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_inet_addr2()
Convert address string with numbers and dots to binary IP address.
- 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_inet_aton()
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_inet_ntoa()
Convert an Internet host address given in network byte order to string in standard numbers and dots notation.
- Parameters
-
- Returns
- The string address.
◆ pj_inet_ntop()
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. - See also
- pj_sockaddr_print()
- 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.
◆ pj_inet_ntop2()
char * pj_inet_ntop2 |
( |
int |
af, |
|
|
const void * |
src, |
|
|
char * |
dst, |
|
|
int |
size |
|
) |
| |
Converts numeric address into its text string representation. - See also
- pj_sockaddr_print()
- 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.
◆ pj_inet_pton()
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_ntohl()
Convert 32-bit value from network byte order to host byte order.
- Parameters
-
netlong | 32-bit network value. |
- Returns
- 32-bit host value.
◆ pj_ntohs()
Convert 16-bit value from network byte order to host byte order.
- Parameters
-
netshort | 16-bit network value. |
- Returns
- 16-bit host value.
◆ pj_sock_accept()
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_sock_bind()
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_sock_bind_in()
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_sock_bind_random()
Bind the IP socket sockfd to the given address and a random port in the specified range.
- Parameters
-
sockfd | The socket desriptor. |
addr | The local address and port to bind the socket to. |
port_range | The port range, relative the to start port number specified in port field in addr. Note that if the port is zero, this param will be ignored. |
max_try | Maximum retries. |
- Returns
- Zero on success.
◆ pj_sock_close()
Close the socket descriptor.
- Parameters
-
sockfd | The socket descriptor. |
- Returns
- Zero on success.
◆ pj_sock_connect()
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_sock_getpeername()
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_sock_getsockname()
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_sock_getsockopt()
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_sock_listen()
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_sock_recv()
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_sock_recvfrom()
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_sock_send()
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_sock_sendto()
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_sock_setsockopt()
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_sock_setsockopt_params()
Set socket options associated with a socket. This method will apply all the options specified, and ignore any errors that might be raised.
- Parameters
-
sockfd | The socket descriptor. |
params | The socket options. |
- Returns
- PJ_SUCCESS or the last error code.
◆ pj_sock_setsockopt_sobuf()
Helper function to set socket buffer size using pj_sock_setsockopt() with capability to auto retry with lower buffer setting value until the highest possible value is successfully set.
- Parameters
-
sockfd | The socket descriptor. |
optname | The option name, valid values are pj_SO_RCVBUF() and pj_SO_SNDBUF(). |
auto_retry | Option whether auto retry with lower value is enabled. |
buf_size | On input, specify the prefered buffer size setting, on output, the buffer size setting applied. |
- Returns
- PJ_SUCCESS or the status code.
◆ pj_sock_shutdown()
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.
◆ pj_sock_socket()
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_sock_socketpair()
Create socket pair - Parameters
-
family | Specifies a communication domain; this selects the protocol family which will be used for communication. On Unix, support AF_UNIX, AF_INET and AF_INET6, On Win32, not support AF_UNIX. |
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. |
sv | The new sockets vector |
- Returns
- Zero on success.
◆ pj_sockaddr_cmp()
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.
◆ pj_sockaddr_copy_addr()
Copy only the address part (sin_addr/sin6_addr) of a socket address.
- Parameters
-
dst | Destination socket address. |
src | Source socket address. |
- See also
- pj_sockaddr_cp()
◆ pj_sockaddr_cp()
Copy socket address. This will copy the whole structure depending on the address family of the source socket address.
- Parameters
-
dst | Destination socket address. |
src | Source socket address. |
- See also
- pj_sockaddr_copy_addr()
◆ pj_sockaddr_get_addr()
Get pointer to the address part of a socket address.
- Parameters
-
- Returns
- Pointer to address part (sin_addr or sin6_addr, depending on address family)
◆ pj_sockaddr_get_addr_len()
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
-
- Returns
- Length in bytes.
◆ pj_sockaddr_get_len()
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
-
- Returns
- Length in bytes.
◆ pj_sockaddr_get_port()
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
-
- Returns
- Port number, in host byte order.
◆ pj_sockaddr_has_addr()
Check that a socket address contains a non-zero address part.
- Parameters
-
- Returns
- Non-zero if address is set to non-zero.
◆ pj_sockaddr_in_get_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.
◆ pj_sockaddr_in_get_port()
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_sockaddr_in_init()
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.
- See also
- pj_sockaddr_init()
- 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_sockaddr_in_set_addr()
Set the IP address of an IPv4 socket address.
- Parameters
-
addr | The IP socket address. |
hostaddr | The host address, in host byte order. |
◆ pj_sockaddr_in_set_port()
Set the port number of an IPv4 socket address.
- See also
- pj_sockaddr_set_port()
- Parameters
-
addr | The IP socket address. |
hostport | The port number, in host byte order. |
◆ pj_sockaddr_in_set_str_addr()
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.
- See also
- pj_sockaddr_set_str_addr()
- 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_sockaddr_init()
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.
- See also
- pj_sockaddr_in_init()
- 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.
◆ pj_sockaddr_parse()
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.
- See also
- pj_sockaddr_parse2()
◆ pj_sockaddr_parse2()
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.
- See also
- pj_sockaddr_parse()
◆ pj_sockaddr_print()
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_sockaddr_set_port()
Set the port number of an Internet socket address.
- Parameters
-
addr | The socket address. |
hostport | The port number, in host byte order. |
◆ pj_sockaddr_set_str_addr()
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_sockaddr_synthesize()
If the source's and desired address family matches, copy the address, otherwise synthesize a new address with the desired address family, from the source address. This can be useful to generate an IPv4-mapped IPv6 address.
- Parameters
-
dst_af | Desired address family. |
dst | Destination socket address, invalid if synthesis is required and failed. |
src | Source socket address. |
- Returns
- PJ_SUCCESS on success, or the error status if synthesis is required and failed.
◆ PJ_AF_INET
◆ PJ_AF_INET6
◆ PJ_AF_IRDA
◆ PJ_AF_PACKET
◆ PJ_AF_UNIX
◆ 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. - See also
- pj_AF_UNSPEC()
◆ PJ_IP_ADD_MEMBERSHIP
◆ PJ_IP_DROP_MEMBERSHIP
◆ PJ_IP_MULTICAST_IF
◆ PJ_IP_MULTICAST_LOOP
◆ PJ_IP_MULTICAST_TTL
◆ PJ_IP_TOS
◆ PJ_IPTOS_LOWDELAY
◆ PJ_IPTOS_MINCOST
◆ PJ_IPTOS_RELIABILITY
◆ PJ_IPTOS_THROUGHPUT
◆ PJ_IPV6_TCLASS
◆ PJ_MSG_DONTROUTE
const int PJ_MSG_DONTROUTE |
|
extern |
◆ PJ_MSG_OOB
◆ PJ_MSG_PEEK
◆ PJ_SO_NOSIGPIPE
◆ PJ_SO_PRIORITY
Set the protocol-defined priority for all packets to be sent on socket.
◆ PJ_SO_RCVBUF
◆ PJ_SO_REUSEADDR
Allows the socket to be bound to an address that is already in use. - See also
- pj_SO_REUSEADDR
◆ PJ_SO_SNDBUF
◆ PJ_SO_TYPE
◆ PJ_SOCK_DGRAM
Connectionless, unreliable datagrams of fixed maximum lengths. - See also
- pj_SOCK_DGRAM()
◆ PJ_SOCK_RAW
◆ PJ_SOCK_RDM
◆ 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. - See also
- pj_SOCK_STREAM()
◆ PJ_SOL_IP
◆ PJ_SOL_IPV6
◆ PJ_SOL_SOCKET
◆ PJ_SOL_TCP
◆ PJ_SOL_UDP
◆ PJ_TCP_NODELAY
Disables the Nagle algorithm for send coalescing. - See also
- pj_TCP_NODELAY
PJLIB Open Source, high performance, small footprint, and very very portable framework
Copyright (C) 2006-2009 Teluu Inc.
|