Cria um soquete (ponto de extremidade para comunição)

# socket_create

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

socket_create — Cria um soquete (ponto de extremidade para comunição)

### Descrição

function socket_create(int `$domain`, int `$type`, int `$protocol`): Socket|false

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.

### Parâmetros

`domain`

  O parâmetro `domain` (domínio) especifica a família de protocolo a ser usada pelo soquete.

  Famílias de endereços/protocolos disponíveis
  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.

  Tipos de soquete disponíveis
  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.

  Protocolos comuns
  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.

### Valor Retornado

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.

### Erros/Exceções

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`.

### Registro de Alterações

Versão | Descrição
--- | ---
8.5.0 | Agora suporta a criação de soquetes da família `AF_PACKET`.
8.0.0 | Em caso de sucesso, esta função agora retorna uma instância de Socket; anteriormente, retornava um resource.

### Veja Também

- socket_accept() - Aceita uma conexão em um soquete
- socket_bind() - Vincula um nome a um soquete
- socket_connect() - Inicia uma conexão em um soquete
- socket_listen() - Escuta uma conexão em um soquete
- socket_last_error() - Retorna o último erro no soquete
- socket_strerror() - Retorna uma string descrevendo um erro no soquete

`↑` and `↓` to navigate • `Enter` to select • `Esc` to close • `/` to open