#include "hysock.h"
#include "portpriv.h"
#include "hyportptb.h"
#include <Iphlpapi.h>
#include <limits.h>
Functions | |
I_32 VMCALL | hysock_accept (struct HyPortLibrary *portLibrary, hysocket_t serverSock, hysockaddr_t addrHandle, hysocket_t *sockHandle) |
The accept function extracts the first connection on the queue of pending connections on socket sock. | |
I_32 VMCALL | hysock_bind (struct HyPortLibrary *portLibrary, hysocket_t sock, hysockaddr_t addr) |
The bind function is used on an unconnected socket before subsequent calls to the connect or listen functions. | |
I_32 VMCALL | hysock_close (struct HyPortLibrary *portLibrary, hysocket_t *sock) |
The close function closes a socket. | |
I_32 VMCALL | hysock_connect (struct HyPortLibrary *portLibrary, hysocket_t sock, hysockaddr_t addr) |
Establish a connection to a peer. | |
const char *VMCALL | hysock_error_message (struct HyPortLibrary *portLibrary) |
Return an error message describing the last OS error that occurred. | |
I_32 VMCALL | hysock_fdset_init (struct HyPortLibrary *portLibrary, hysocket_t socketP) |
Create a file descriptor (FD) set of one element. | |
I_32 VMCALL | hysock_fdset_size (struct HyPortLibrary *portLibrary, hysocket_t handle) |
Answer the maximum size of the fdset currently declared for the platform. | |
I_32 VMCALL | hysock_freeaddrinfo (struct HyPortLibrary *portLibrary, hyaddrinfo_t handle) |
Frees the memory created by the call to hysock_getaddrinfo(). | |
I_32 VMCALL | hysock_getaddrinfo (struct HyPortLibrary *portLibrary, char *name, hyaddrinfo_t hints, hyaddrinfo_t result) |
I_32 VMCALL | hysock_getaddrinfo_address (struct HyPortLibrary *portLibrary, hyaddrinfo_t handle, U_8 *address, int index, U_32 *scope_id) |
Answers a U_8 array representing the address at "index" in the structure returned from (), indexed starting at 0. | |
I_32 VMCALL | hysock_getaddrinfo_create_hints (struct HyPortLibrary *portLibrary, hyaddrinfo_t *result, I_16 family, I_32 socktype, I_32 protocol, I_32 flags) |
Answers a hints structure as an opaque pointer in "result". | |
I_32 VMCALL | hysock_getaddrinfo_family (struct HyPortLibrary *portLibrary, hyaddrinfo_t handle, I_32 *family, int index) |
Answers the family type of the address at "index" in the structure returned from (), indexed starting at 0. | |
I_32 VMCALL | hysock_getaddrinfo_length (struct HyPortLibrary *portLibrary, hyaddrinfo_t handle, I_32 *length) |
Answers the number of results returned from (). | |
I_32 VMCALL | hysock_getaddrinfo_name (struct HyPortLibrary *portLibrary, hyaddrinfo_t handle, char *name, int index) |
Answers the cannon name of the address at "index" in the structure returned from (), indexed starting at 0. | |
I_32 VMCALL | hysock_gethostbyaddr (struct HyPortLibrary *portLibrary, char *addr, I_32 length, I_32 type, hyhostent_t handle) |
Answer information on the host referred to by the address. | |
I_32 VMCALL | hysock_gethostbyname (struct HyPortLibrary *portLibrary, char *name, hyhostent_t handle) |
Answer information on the host, specified by name. | |
I_32 VMCALL | hysock_gethostname (struct HyPortLibrary *portLibrary, char *buffer, I_32 length) |
Answer the name of the local host machine. | |
I_32 VMCALL | hysock_getnameinfo (struct HyPortLibrary *portLibrary, hysockaddr_t in_addr, I_32 sockaddr_size, char *name, I_32 name_length, int flags) |
Answers the host name of the "in_addr" in a preallocated buffer. | |
I_32 VMCALL | hysock_getopt_bool (struct HyPortLibrary *portLibrary, hysocket_t socketP, I_32 optlevel, I_32 optname, BOOLEAN *optval) |
Answer the value of the nominated boolean socket option. | |
I_32 VMCALL | hysock_getopt_byte (struct HyPortLibrary *portLibrary, hysocket_t socketP, I_32 optlevel, I_32 optname, U_8 *optval) |
Answer the value of the nominated byte socket option. | |
I_32 VMCALL | hysock_getopt_int (struct HyPortLibrary *portLibrary, hysocket_t socketP, I_32 optlevel, I_32 optname, I_32 *optval) |
Answer the value of the nominated integer socket option. | |
I_32 VMCALL | hysock_getopt_linger (struct HyPortLibrary *portLibrary, hysocket_t socketP, I_32 optlevel, I_32 optname, hylinger_t optval) |
Answer the value of the socket linger option. | |
I_32 VMCALL | hysock_getopt_sockaddr (struct HyPortLibrary *portLibrary, hysocket_t socketP, I_32 optlevel, I_32 optname, hysockaddr_t optval) |
Answer the value of the socket option, an address struct. | |
I_32 VMCALL | hysock_getpeername (struct HyPortLibrary *portLibrary, hysocket_t handle, hysockaddr_t addrHandle) |
Answer the remote name for the socket. | |
I_32 VMCALL | hysock_getsockname (struct HyPortLibrary *portLibrary, hysocket_t handle, hysockaddr_t addrHandle) |
Answer the local name for the socket. | |
I_32 VMCALL | hysock_hostent_addrlist (struct HyPortLibrary *portLibrary, hyhostent_t handle, U_32 index) |
Answer the nominated element of the address list within the argument hostent struct. | |
I_32 VMCALL | hysock_hostent_aliaslist (struct HyPortLibrary *portLibrary, hyhostent_t handle, char ***aliasList) |
Answer a reference to the list of alternative names for the host within the argument hostent struct. | |
I_32 VMCALL | hysock_hostent_hostname (struct HyPortLibrary *portLibrary, hyhostent_t handle, char **hostName) |
Answer the host name (string) within the argument hostent struct. | |
I_32 VMCALL | hysock_htonl (struct HyPortLibrary *portLibrary, I_32 val) |
Answer the 32 bit host ordered argument, in network byte order. | |
U_16 VMCALL | hysock_htons (struct HyPortLibrary *portLibrary, U_16 val) |
Answer the 16 bit host ordered argument, in network byte order. | |
I_32 VMCALL | hysock_inetaddr (struct HyPortLibrary *portLibrary, char *addrStr, U_32 *addr) |
Answer the dotted IP string as an Internet address. | |
I_32 VMCALL | hysock_inetntoa (struct HyPortLibrary *portLibrary, char **addrStr, U_32 nipAddr) |
Answer the Internet address as a dotted IP string. | |
I_32 VMCALL | hysock_ipmreq_init (struct HyPortLibrary *portLibrary, hyipmreq_t handle, U_32 nipmcast, U_32 nipinterface) |
Initializes a new multicast membership structure. | |
I_32 VMCALL | hysock_ipv6_mreq_init (struct HyPortLibrary *portLibrary, hyipv6_mreq_t handle, U_8 *ipmcast_addr, U_32 ipv6mr_interface) |
Fills in a preallocated hyipv6_mreq_struct. | |
I_32 VMCALL | hysock_linger_enabled (struct HyPortLibrary *portLibrary, hylinger_t handle, BOOLEAN *enabled) |
Answer true if the linger is enabled in the argument linger struct. | |
I_32 VMCALL | hysock_linger_init (struct HyPortLibrary *portLibrary, hylinger_t handle, I_32 enabled, U_16 timeout) |
Initializes a new linger structure, enabled or disabled, with the timeout as specified. | |
I_32 VMCALL | hysock_linger_linger (struct HyPortLibrary *portLibrary, hylinger_t handle, U_16 *linger) |
Answer the linger timeout value in the argument linger struct. | |
I_32 VMCALL | hysock_listen (struct HyPortLibrary *portLibrary, hysocket_t sock, I_32 backlog) |
Set the socket to listen for incoming connection requests. | |
I_32 VMCALL | hysock_ntohl (struct HyPortLibrary *portLibrary, I_32 val) |
Answer the 32 bit network ordered argument, in host byte order. | |
U_16 VMCALL | hysock_ntohs (struct HyPortLibrary *portLibrary, U_16 val) |
Answer the 16-bit network ordered argument, in host byte order. | |
I_32 VMCALL | hysock_read (struct HyPortLibrary *portLibrary, hysocket_t sock, U_8 *buf, I_32 nbyte, I_32 flags) |
The read function receives data from a connected socket. | |
I_32 VMCALL | hysock_readfrom (struct HyPortLibrary *portLibrary, hysocket_t sock, U_8 *buf, I_32 nbyte, I_32 flags, hysockaddr_t addrHandle) |
The read function receives data from a possibly connected socket. | |
I_32 VMCALL | hysock_select (struct HyPortLibrary *portLibrary, I_32 nfds, hyfdset_t readfds, hyfdset_t writefds, hyfdset_t exceptfds, hytimeval_t timeout) |
The select function allows the state of sockets for read & write operations and exceptional conditions to be tested. | |
I_32 VMCALL | hysock_select_read (struct HyPortLibrary *portLibrary, hysocket_t hysocketP, I_32 secTime, I_32 uSecTime, BOOLEAN accept) |
A helper method, to ensure a read operation can be performed without blocking. | |
I_32 VMCALL | hysock_set_nonblocking (struct HyPortLibrary *portLibrary, hysocket_t socketP, BOOLEAN nonblocking) |
Set the nonblocking state of the socket. | |
I_32 VMCALL | hysock_setflag (struct HyPortLibrary *portLibrary, I_32 flag, I_32 *arg) |
Ensure the flag designated is set in the argument. | |
I_32 VMCALL | hysock_setopt_bool (struct HyPortLibrary *portLibrary, hysocket_t socketP, I_32 optlevel, I_32 optname, BOOLEAN *optval) |
Set the value of the nominated boolean socket option. | |
I_32 VMCALL | hysock_setopt_byte (struct HyPortLibrary *portLibrary, hysocket_t socketP, I_32 optlevel, I_32 optname, U_8 *optval) |
Set the value of the nominated byte socket option. | |
I_32 VMCALL | hysock_setopt_int (struct HyPortLibrary *portLibrary, hysocket_t socketP, I_32 optlevel, I_32 optname, I_32 *optval) |
Set the value of the nominated integer socket option. | |
I_32 VMCALL | hysock_setopt_ipmreq (struct HyPortLibrary *portLibrary, hysocket_t socketP, I_32 optlevel, I_32 optname, hyipmreq_t optval) |
Set the multicast request on this socket. | |
I_32 VMCALL | hysock_setopt_ipv6_mreq (struct HyPortLibrary *portLibrary, hysocket_t socketP, I_32 optlevel, I_32 optname, hyipv6_mreq_t optval) |
Set the multicast request on this socket for IPv6 sockets. | |
I_32 VMCALL | hysock_setopt_linger (struct HyPortLibrary *portLibrary, hysocket_t socketP, I_32 optlevel, I_32 optname, hylinger_t optval) |
Set the linger value on the socket. | |
I_32 VMCALL | hysock_setopt_sockaddr (struct HyPortLibrary *portLibrary, hysocket_t socketP, I_32 optlevel, I_32 optname, hysockaddr_t optval) |
Set the sockaddr for the socket. | |
I_32 VMCALL | hysock_shutdown (struct HyPortLibrary *portLibrary) |
Terminates use of the socket library. | |
I_32 VMCALL | hysock_shutdown_input (struct HyPortLibrary *portLibrary, hysocket_t sock) |
The shutdown_input function disables the input stream on a socket. | |
I_32 VMCALL | hysock_shutdown_output (struct HyPortLibrary *portLibrary, hysocket_t sock) |
The shutdown_output function disables the output stream on a socket. | |
I_32 VMCALL | hysock_sockaddr (struct HyPortLibrary *portLibrary, hysockaddr_t handle, char *addrStr, U_16 port) |
Creates a new hysockaddr, refering to the specified port and address. | |
I_32 VMCALL | hysock_sockaddr_address (struct HyPortLibrary *portLibrary, hysockaddr_t handle) |
Answer the address, in network order, of the hysockaddr argument. | |
I_32 VMCALL | hysock_sockaddr_address6 (struct HyPortLibrary *portLibrary, hysockaddr_t handle, U_8 *address, U_32 *length, U_32 *scope_id) |
Answers the IP address of a structure and its length, in a preallocated buffer. | |
I_32 VMCALL | hysock_sockaddr_family (struct HyPortLibrary *portLibrary, I_16 *family, hysockaddr_t handle) |
Answers the family name of a hysockaddr_struct. | |
I_32 VMCALL | hysock_sockaddr_init (struct HyPortLibrary *portLibrary, hysockaddr_t handle, I_16 family, U_32 nipAddr, U_16 nPort) |
Creates a new hysockaddr, refering to the specified port and address. | |
I_32 VMCALL | hysock_sockaddr_init6 (struct HyPortLibrary *portLibrary, hysockaddr_t handle, U_8 *addr, I_32 addrlength, I_16 family, U_16 nPort, U_32 flowinfo, U_32 scope_id, hysocket_t sock) |
Answers an initialized hysockaddr_struct structure. | |
U_16 VMCALL | hysock_sockaddr_port (struct HyPortLibrary *portLibrary, hysockaddr_t handle) |
Answer the port, in network order, of the hysockaddr argument. | |
I_32 VMCALL | hysock_socket (struct HyPortLibrary *portLibrary, hysocket_t *handle, I_32 family, I_32 socktype, I_32 protocol) |
Creates a new socket descriptor and any related resources. | |
I_32 VMCALL | hysock_socketIsValid (struct HyPortLibrary *portLibrary, hysocket_t handle) |
Determines whether or not the socket is valid. | |
I_32 VMCALL | hysock_startup (struct HyPortLibrary *portLibrary) |
Initiate the use of sockets by a process. | |
I_32 VMCALL | hysock_timeval_init (struct HyPortLibrary *portLibrary, U_32 secTime, U_32 uSecTime, hytimeval_t timeP) |
Create a time structure, representing the timeout period defined in seconds & microSeconds. | |
I_32 VMCALL | hysock_write (struct HyPortLibrary *portLibrary, hysocket_t sock, U_8 *buf, I_32 nbyte, I_32 flags) |
The write function writes data to a connected socket. | |
I_32 VMCALL | hysock_writeto (struct HyPortLibrary *portLibrary, hysocket_t sock, U_8 *buf, I_32 nbyte, I_32 flags, hysockaddr_t addrHandle) |
The writeto function writes data to a datagram socket. | |
I_32 VMCALL | hysock_get_network_interfaces (struct HyPortLibrary *portLibrary, struct hyNetworkInterfaceArray_struct *array, BOOLEAN preferIPv4Stack) |
Queries and returns the information for the network interfaces that are currently active within the system. | |
I_32 VMCALL | hysock_free_network_interface_struct (struct HyPortLibrary *portLibrary, struct hyNetworkInterfaceArray_struct *array) |
Frees the memory allocated for the hyNetworkInterface_struct array passed in. | |
I_32 VMCALL | hysock_connect_with_timeout (struct HyPortLibrary *portLibrary, hysocket_t sock, hysockaddr_t addr, U_32 timeout, U_32 step, U_8 **context) |
Establish a connection to a peer with a timeout. |
|
The accept function extracts the first connection on the queue of pending connections on socket sock. It then creates a new socket and returns a handle to the new socket. The newly created socket is the socket that will handle the actual the connection and has the same properties as socket sock. The accept function can block the caller until a connection is present if no pending connections are present on the queue.
|
|
The bind function is used on an unconnected socket before subsequent calls to the connect or listen functions. When a socket is created with a call to the socket function, it exists in a name space (address family), but it has no name assigned to it. Use bind to establish the local association of the socket by assigning a local name to an unnamed socket.
|
|
The close function closes a socket. Use it to release the socket descriptor socket so further references to socket will fail.
|
|
Establish a connection to a peer.
|
|
Establish a connection to a peer with a timeout. This function is called repeatedly in order to carry out the connect and to allow other tasks to proceed on certain platforms. The caller must first call with step = HY_SOCK_STEP_START, if the result is HY_ERROR_SOCKET_NOTCONNECTED it will then call it with step = CHECK until either another error or 0 is returned to indicate the connect is complete. Each time the function should sleep for no more than timeout milliseconds. If the connect succeeds or an error occurs, the caller must always end the process by calling the function with step = HY_SOCK_STEP_DONE
|
|
Return an error message describing the last OS error that occurred. The last error returned is not thread safe, it may not be related to the operation that failed for this thread.
|
|
Create a file descriptor (FD) set of one element. The call may not be generally useful, as it currently only supports a single FD and is assumed to be used in conjunction with the hysock_select function.
|
|
Answer the maximum size of the fdset currently declared for the platform. This value is a parameter of the hysock_select call.
|
|
Frees the memory allocated for the hyNetworkInterface_struct array passed in.
|
|
Frees the memory created by the call to hysock_getaddrinfo().
|
|
Queries and returns the information for the network interfaces that are currently active within the system. Applications are responsible for freeing the memory returned via the handle.
|
|
|
|
Answers a list of addresses as an opaque pointer in "result". Use the following functions to extract the details:
The address is in network byte order. The address will either be 4 or 16 bytes depending on whether it is an OS_AF_INET address or an OS_AF_INET6 address. You can check this will a call to hysock_getaddrinfo_family. Therefore you should either check the family type before preallocating the "address" or define it as 16 bytes.
|
|
Answers a hints structure as an opaque pointer in "result". This hints structure is used to modify the results returned by a call to (). There is one of these structures per thread, so subsequent calls to this function will overwrite the same structure in memory. The structure is cached in ptBuffers and is cleared when a call to hyport_free_ptBuffer is made. This function is only works on IPv6 supported OS's. If it is called on an OS that does not support IPv6 then it essentially returns a NULL pointer, meaning it will have no effect on the call to (). See man pages, or MSDN doc on getaddrinfo for information on how the hints structure works.
|
|
Answers the family type of the address at "index" in the structure returned from (), indexed starting at 0. Currently the family types we support are HYSOCK_AFINET and HYSOCK_AFINET6.
|
|
Answers the number of results returned from ().
|
|
Answers the cannon name of the address at "index" in the structure returned from (), indexed starting at 0. The preallocated buffer for "name" should be the size of the maximum host name: OSNIMAXHOST.
|
|
Answer information on the host referred to by the address. The information includes name, aliases and addresses for the nominated host (the latter being relevant on multi-homed hosts). This call has only been tested for addresses of type AF_INET.
|
|
Answer information on the host, specified by name. The information includes host name, aliases and addresses.
|
|
Answer the name of the local host machine.
|
|
Answers the host name of the "in_addr" in a preallocated buffer. The preallocated buffer for "name" should be the size of the maximum host name: OSNIMAXHOST. Currently only AF_INET and AF_INET6 are supported.
|
|
Answer the value of the nominated boolean socket option. Refer to the private platformSocketLevel & platformSocketOption functions for details of the options supported.
|
|
Answer the value of the nominated byte socket option. Refer to the private platformSocketLevel & platformSocketOption functions for details of the options supported.
|
|
Answer the value of the nominated integer socket option. Refer to the private platformSocketLevel & platformSocketOption functions for details of the options supported.
|
|
Answer the value of the socket linger option. See the hysock_linger_init for details of the linger behavior.
|
|
Answer the value of the socket option, an address struct. Currently only used to retrieve the interface of multicast sockets, but the more general call style has been used.
|
|
Answer the remote name for the socket.
|
|
Answer the local name for the socket. Note, the stack getsockname function actually answers a sockaddr structure, not a string name as the function name might imply.
|
|
Answer the nominated element of the address list within the argument hostent struct. The address is in network order.
|
|
Answer a reference to the list of alternative names for the host within the argument hostent struct.
|
|
Answer the host name (string) within the argument hostent struct.
|
|
Answer the 32 bit host ordered argument, in network byte order.
|
|
Answer the 16 bit host ordered argument, in network byte order.
|
|
Answer the dotted IP string as an Internet address.
|
|
Answer the Internet address as a dotted IP string.
|
|
Initializes a new multicast membership structure. The membership structure is used to join & leave multicast groups
|
|
Fills in a preallocated hyipv6_mreq_struct.
|
|
Answer true if the linger is enabled in the argument linger struct.
|
|
Initializes a new linger structure, enabled or disabled, with the timeout as specified. Linger defines the behavior when unsent messages exist for a socket that has been sent close. If linger is disabled, the default, close returns immediately and the stack attempts to deliver unsent messages. If linger is enabled:
|
|
Answer the linger timeout value in the argument linger struct.
|
|
Set the socket to listen for incoming connection requests. This call is made prior to accepting requests, via the hysock_accept function. The backlog specifies the maximum length of the queue of pending connections, after which further requests are rejected.
|
|
Answer the 32 bit network ordered argument, in host byte order.
|
|
Answer the 16-bit network ordered argument, in host byte order.
|
|
The read function receives data from a connected socket. Calling read will return as much information as is currently available up to the size of the buffer supplied. If no incoming data is available at the socket, the read call blocks and waits for data to arrive.
|
|
The read function receives data from a possibly connected socket. Calling read will return as much information as is currently available up to the size of the buffer supplied. If the information is too large for the buffer, the excess will be discarded. If no incoming data is available at the socket, the read call blocks and waits for data to arrive. It the address argument is not null, the address will be updated with address of the message sender.
|
|
The select function allows the state of sockets for read & write operations and exceptional conditions to be tested. The function is used prior to a hysock_read/readfrom, to control the period the operation may block for. Depending upon the timeout specified:
|
|
A helper method, to ensure a read operation can be performed without blocking. The portable version of a read operation is a blocking call (will wait indefinitely for data). This function should be called prior to a read operation, to provide a read timeout. If the result is 1, the caller is guaranteed to be able to complete a read on the socket without blocking. The actual contents of the fdset are not available for inspection (as provided in the more general 'select' function). The timeout is specified in seconds and microseconds. If the timeout is 0, skip this function (and thus the caller of a subsequent read operation may block).
|
|
Set the nonblocking state of the socket.
|
|
Ensure the flag designated is set in the argument. This is used to construct arguments for the hysock_read/readfrom/write/writeto calls with optional flags, such as HYSOCK_MSG_PEEK.
|
|
Set the value of the nominated boolean socket option. Refer to the private platformSocketLevel & platformSocketOption functions for details of the options supported.
|
|
Set the value of the nominated byte socket option. Refer to the private platformSocketLevel & platformSocketOption functions for details of the options supported.
|
|
Set the value of the nominated integer socket option. Refer to the private platformSocketLevel & platformSocketOption functions for details of the options supported.
|
|
Set the multicast request on this socket. Currently this is used to join or leave the nominated multicast group on the local interface. It may be more generally useful, so a generic 'setop' function has been defined.
|
|
Set the multicast request on this socket for IPv6 sockets. Currently this is used to join or leave the nominated multicast group on the local interface. It may be more generally useful, so a generic 'setop' function has been defined.t. Supported families are OS_AF_INET and OS_AF_INET6
|
|
Set the linger value on the socket. See the hysock_linger_init for details of the linger behavior.
|
|
Set the sockaddr for the socket. Currently used to set the interface of multicast sockets, but the more general call style is used, in case it is more generally useful.
|
|
Terminates use of the socket library. No sockets should be in use or the results of this operation are unpredictable. Frees any resources held by the socket library.
|
|
The shutdown_input function disables the input stream on a socket. Any subsequent reads from the socket will fail.
|
|
The shutdown_output function disables the output stream on a socket. Any subsequent writes to the socket will fail.
|
|
Creates a new hysockaddr, refering to the specified port and address. The only address family currently supported is AF_INET.
|
|
Answer the address, in network order, of the hysockaddr argument.
|
|
Answers the IP address of a structure and its length, in a preallocated buffer. Preallocated buffer "address" should be 16 bytes. "length" tells you how many bytes were used 4 or 16.
|
|
Answers the family name of a hysockaddr_struct. Supported families are OS_AF_INET and OS_AF_INET6
|
|
Creates a new hysockaddr, refering to the specified port and address. The only address family currently supported is AF_INET.
|
|
Answers an initialized hysockaddr_struct structure. Pass in a hysockaddr_struct with some initial parameters to initialize it appropriately. Currently the only address families supported are OS_AF_INET6 and OS_AF_INET, which will be determined by addrlength. (4 bytes for IPv4 addresses and 16 bytes for IPv6 addresses).
|
|
Answer the port, in network order, of the hysockaddr argument.
|
|
Creates a new socket descriptor and any related resources.
|
|
Determines whether or not the socket is valid.
|
|
Initiate the use of sockets by a process. This function must be called before any other socket calls.
|
|
Create a time structure, representing the timeout period defined in seconds & microSeconds. Timeval's are used as timeout arguments in the hysock_select function.
|
|
The write function writes data to a connected socket. The successful completion of a write does not indicate that the data was successfully delivered. If no buffer space is available within the transport system to hold the data to be transmitted, send will block.
|
|
The writeto function writes data to a datagram socket. The successful completion of a writeto does not indicate that the data was successfully delivered. If no buffer space is available within the transport system to hold the data to be transmitted, writeto will block.
|