socket_recvfrom

(PHP 4 >= 4.1.0, PHP 5, PHP 7, PHP 8)

socket_recvfromRecebe dados de um soquete, seja ele orientado a conexão ou não

Descrição

socket_recvfrom(
    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 ou null se o soquete for orientado à conexão.

port

Este argumento se aplica apenas aos soquetes AF_INET e AF_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