(PHP 4 >= 4.1.0, PHP 5, PHP 7, PHP 8)
socket_create — Cria um soquete (ponto de extremidade para comunição)
Cria e retorna uma instância de Socket, também referenciado como um ponto de extremidade de comunicação. Uma conexão típica de rede é construída com 2 soquetes, um fazendo o papel do cliente, e outro fazendo o papel do servidor.
domain
O parâmetro domain
(domínio) especifica a família de
protocolo a ser usada pelo soquete.
Domínio | Descrição |
---|---|
AF_INET |
Protocolos baseados em Internet IPv4. TCP e UDP são protocolos comuns desta família. |
AF_INET6 |
Protocolos baseados em Internet IPv6. TCP e UDP são protocolos comuns desta família. |
AF_UNIX |
Família de protocolos de comunicação local. Alta eficiência e pouca sobrecarga fazem dela uma ótima forma de IPC (Comunicação Entre Processos, da sigla em inglês). |
type
O parâmetro type
seleciona o tipo de comunicação a
ser usada pelo soquete.
Tipo | Descrição |
---|---|
SOCK_STREAM |
Fornece fluxos de byte sequenciais, confiáveis, bidirecionais simultâneos, baseados em conexão. Um mecanismo de transmissão de dados fora-de-banda pode ser suportado. O protocolo TCP é baseado neste tipo de soquete. |
SOCK_DGRAM |
Suporta datagramas (mensagens sem uma conexão e não confiáveis de comprimento máximo fixo). O protocolo UDP é baseado neste tipo de soquete. |
SOCK_SEQPACKET |
Fornece um caminho de transmissão de dados sequencial, confiável e bidirecional baseado em conexão para datagramas de comprimento máximo fixo; um consumidor é obrigado a ler um pacote inteiro com cada chamada de leitura. |
SOCK_RAW |
Fornece acesso bruto ao protocolo de rede. Este tipo especial de soquete pode ser usado para construir manualmente qualquer tipo de protocolo. Um uso comum para esse tipo de soquete é realizar solicitações ICMP (como "ping"). |
SOCK_RDM |
Fornece uma camada de datagrama confiável que não garante a ordenação. Na maior parte dos sistemas operacionais isto não está implementado. |
protocol
O parâmetro protocol
define o protocolo
específico dentro do domínio especificado em domain
a ser usado
durante a comunicação no socket retornado. O valor adequado pode ser
recuperado por nome usando getprotobyname(). Se
o protocolo desejado for TCP ou UDP, as constantes correspondentes
SOL_TCP
e SOL_UDP
também podem ser usadas.
Nome | Descrição |
---|---|
icmp | O Internet Control Message Protocol é usado principalmente por "gateways" e "hosts" para relatar erros na comunicação de datagramas. O comando "ping" (presente na maioria dos sistemas operacionais modernos) é um exemplo de aplicação do ICMP. |
udp | O User Datagram Protocol é um protocolo sem conexão e não confiável, com comprimentos de registro fixos. Devido a esses aspectos, o UDP requer uma quantidade mínima de sobrecarga de protocolo. |
tcp | O Transmission Control Protocol é um protocolo confiável, baseado em conexão, orientado a fluxo e bidirecional simultâneo. O TCP garante que todos os pacotes de dados serão recebidos na ordem em que foram enviados. Se algum pacote for perdido de alguma forma durante a comunicação, o TCP retransmitirá automaticamente o pacote até que o computador de destino reconheça esse pacote. Por razões de confiabilidade e desempenho, a própria implementação do TCP decide os limites apropriados do octeto da camada de comunicação do datagrama subjacente. Portanto, as aplicações TCP devem permitir a possibilidade de transmissão parcial de registros. |
socket_create() retorna uma instância de Socket em caso de sucesso,
ou false
em caso de 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.
Se um domain
ou
type
inválidos forem fornecidos, o padrão de socket_create()
é usar AF_INET
e
SOCK_STREAM
respectivamente e emitir, adicionalmente, uma
mensagem E_WARNING
.
Versão | Descrição |
---|---|
8.0.0 | Em caso de sucesso, esta função agora retorna uma instância de Socket; anteriormente, retornava um resource. |