socket_recvfrom
(PHP 4 >= 4.1.0, PHP 5, PHP 7, PHP 8)
socket_recvfrom — Recebe dados de um soquete, seja ele orientado a conexão ou não
Descrição
Socket
$socket
,string
&$data
,int
$length
,int
$flags
,string
&$address
,int
&$port
= null
): int|false
A função socket_recvfrom() recebe o número de bytes definido em
length
na variável definida em data
do
endereço informado em address
na porta port
(se o
soquete não for do tipo AF_UNIX
) usando
o soquete passado em socket
. A função socket_recvfrom() pode ser
usada para coletar dados de soquetes conectados e não conectados.
Além disso, uma ou mais opções podem ser especificadas para modificar o comportamento
da função.
Os parâmetros address
e port
precisam ser
passados por referência. Se o soquete não for orientado a conexão,
address
será definido como o endereço do protocolo de Internet
do servidor remoto ou o caminho para o soquete UNIX. Se o soquete for
orientado a conexão, address
será null
. Além disso,
a variável definida em port
conterá a porta do servidor remoto no
caso de um soquete AF_INET
ou
AF_INET6
não conectado.
Note: Esta função é compatível com dados binários.
Parâmetros
socket
-
O parâmetro
socket
precisa ser uma instância de Socket criada previamente por socket_create(). data
-
Os dados recebidos serão buscados na variável especificada por
data
. length
-
O parâmetro
length
define o número máximo de bytes que serão buscados do servidor remoto. flags
-
O vaor de
flags
pode ser qualquer combinação das opções a seguir, combinadas com o operador OR binário (|
).Valores possíveis para flags
Opção Descrição MSG_OOB
Processa dados fora-de-banda. MSG_PEEK
Recebe dados do início da fila de recebimento sem removê-los da fila. MSG_WAITALL
Bloqueis até que o número de bytes definidos em length
tenham sido recebidos. Entretando, se um sinal for capturado ou se o servidor remoto desconectar, a função poderá retornar menos dados.MSG_DONTWAIT
Com esta opção definida, a função retorna mesmo se ela normalmente fosse bloquer. address
-
Se o soquete for do tipo
AF_UNIX
,address
será o caminho para o arquivo. Caso contrário, para soquetes não conectados,address
será o endereço IP do servidor remoto ounull
se o soquete for orientado à conexão. port
-
Este argumento se aplica apenas aos soquetes
AF_INET
eAF_INET6
e especifica a porta remota da qual os dados serão recebidos. Se o soquete for orientado à conexão,port
seránull
.
Valor Retornado
socket_recvfrom() retorna o número de bytes recebidos,
ou false
se houver um erro. O código de erro real pode ser recuperado
chamando socket_last_error(). Este código de erro pode ser
passado para socket_strerror() para obter uma explicação
textual do erro.
Registro de Alterações
Versão | Descrição |
---|---|
8.0.0 |
O parâmetro socket agora espera uma instância de Socket;
anteriormente, um resource era esperado.
|
Exemplos
Example #1 Exemplo de socket_recvfrom()
<?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 "Recebido $buf do endereço remoto $from e porta remota $port" . PHP_EOL;
?>
Este exemplo iniciará um soquete UDP na porta 1223 de 127.0.0.1 e mostrará no máximo 12 caracteres recebidos de um servidor remoto.
Veja Também
- socket_recv() - Recebe dados de um soquete conectado
- socket_send() - Envia dados para um soquete conectado
- socket_sendto() - Envia uma mensagem para um soquete, esteja ele conectado ou não
- socket_create() - Cria um soquete (ponto de extremidade para comunição)