The recvfrom
function reads one packet from the socket
socket into the buffer buffer. The size argument
specifies the maximum number of bytes to be read.
If the packet is longer than size bytes, then you get the first
size bytes of the packet and the rest of the packet is lost.
There's no way to read the rest of the packet. Thus, when you use a
packet protocol, you must always know how long a packet to expect.
The addr and length-ptr arguments are used to return the
address where the packet came from. See Socket Addresses. For a
socket in the local domain the address information won't be meaningful,
since you can't read the address of such a socket (see Local Namespace). You can specify a null pointer as the addr argument
if you are not interested in this information.
The flags are interpreted the same way as for recv
(see Socket Data Options). The return value and error conditions
are also the same as for recv
.
This function is defined as a cancellation point in multi-threaded
programs, so one has to be prepared for this and make sure that
allocated resources (like memory, files descriptors, semaphores or
whatever) are freed even if the thread is canceled.