socket_recvfrom
(PHP 4 >= 4.1.0, PHP 5, PHP 7, PHP 8)
socket_recvfrom — Receives data from a socket whether or not it is connection-oriented
Description
The address and port must be
passed by reference. If the socket is not connection-oriented,
address will be set to the internet protocol address of
the remote host or the path to the UNIX socket. If the socket is
connection-oriented, address is null. Additionally,
the port will contain the port of the remote host in
the case of an unconnected AF_INET or
AF_INET6 socket.
Note: This function is
binary-safe.
Parameters
socket
-
The socket must be a Socket instance previously
created by socket_create().
data
-
The data received will be fetched to the variable specified with
data.
length
-
Up to length bytes will be fetched from remote host.
flags
-
The value of flags can be any combination of
the following flags, joined with the binary OR (|)
operator.
Possible values for flags
| Flag |
Description |
MSG_OOB |
Process out-of-band data.
|
MSG_PEEK |
Receive data from the beginning of the receive queue without
removing it from the queue.
|
MSG_WAITALL |
Block until at least length are received.
However, if a signal is caught or the remote host disconnects, the
function may return less data.
|
MSG_DONTWAIT |
With this flag set, the function returns even if it would normally
have blocked.
|
address
-
If the socket is of the type AF_UNIX type,
address is the path to the file. Else, for
unconnected sockets, address is the IP address of,
the remote host, or null if the socket is connection-oriented.
port
-
This argument only applies to AF_INET and
AF_INET6 sockets, and specifies the remote port
from which the data is received. If the socket is connection-oriented,
port will be null.
Return Values
socket_recvfrom() returns the number of bytes received,
or false if there was an error. The actual error code can be retrieved by
calling socket_last_error(). This error code may be
passed to socket_strerror() to get a textual explanation
of the error.
Examples
Example #1 socket_recvfrom() example
<?php
$socket = socket_create(AF_INET, SOCK_DGRAM, SOL_UDP);
socket_bind($socket, '127.0.0.1', 1223);
$from = '';
$port = 0;
socket_recvfrom($socket, $buf, 12, 0, $from, $port);
echo "Received $buf from remote address $from and remote port $port" . PHP_EOL;
?>
This example will initiate a UDP socket on port 1223 of 127.0.0.1
and print at most 12 characters received from a remote host.