Manual do PHP
Anterior |  | Próxima

# socket_create

(PHP 4 >= 4.1.0, PHP 5)

socket_create -- Cria um socket (endpoint para comunicação)

## Descrição

resource socket_create ( int domain, int type, int protocol )

Cria e retorna um socket resource, também referenciado como um endpoint para comunicação. Uma conexão típica de rede é feita em cima de 2 sockets, um realizando o papel do cliente, e o outro realizando o papel de servidor.

O parâmetro domain especifica a família do protocolo para ser usado pelo socket.

Tabela 1. Famílias disponíveis Endereços/Protocolos

Domínio | Descrição
--- | ---
AF_INET | IPv4 baseado nos protocolos de Internet. TCP e UDP são protocolos comuns dessa família de protocolos.
AF_INET6 | IPv6 baseado nos protocolos de Internet. TCP e UDP são protocolos comuns dessa família de protocolos. Suporta adicionado no PHP 5.0.0.
AF_UNIX | Família de protocolos de comunicação local. Alta eficiência e baixo sobrecarga fazem deste uma forte forma de IPC (Processos internos de comunicação).

O parâmetro type seleciona o tipo de comunicação para ser usado pelo socket.

Tabela 2. Tipos de socket disponíveis

Tipo | Descrição
--- | ---
SOCK_STREAM | Fornece sequencial, seguro, e em ambos os sentidos, conexões baseadas em "byte streams". Dados "out-of-band" do mecanismo de transmissão devem ser suportados. O protocolo TCP é baseado neste tipo de socket.
SOCK_DGRAM | Suporta diagrama de dados (baixa conexão, mensagens inconfiáveis de um comprimento máximo fixo). O protocolo UDP protocol é baseado neste tipo de socket.
SOCK_SEQPACKET | Fornece um sequencial, seguro, e em duas direções de tipos de conexões para transmissão de dados endereçados para o diagrama de dados de comprimento máximo fixo; um consumidor é requerido para ler um pacote inteiro com cada chamada de leitura.
SOCK_RAW | Fornece um protocolo de rede de acesso rápido. Este tipo especial de socket pode ser usado manualmente para construir algum tipo de protocolo. Um uso comum para esse tipo de socket é desempenhar requisições ICMP (como ping, traceroute, etc).
SOCK_RDM | Fornece uma camada seguro que não garante ordenação. Isso é comumente não implementado no seu sistema operacional.

O parâmetro protocol configura o protocolo especificado dentro do domain especificado para ser usado quando houver comunicação de retorno com o socket. O valor da propriedade pode ser retornado pelo nome usando getprotobyname(). Se o protocolo desejado é TCP, ou UDP as constantes correspondentes são `SOL_TCP`, e `SOL_UDP` podem também ser usadas.

Tabela 3. Protocolos comuns

Nome | Descrição
--- | ---
icmp | O protocolo de controle de mensagens internet "The Internet Control Message Protocol" é usado primariamente por gateways e hosts para reportar erros no diagrama de dados de comunicação. O comando "ping" (presente em muitos modernos sistemas operacionais) é um exemplo aplicado de ICMP.
udp | O protocolo de diagrama de dados de usuários "User Datagram Protocol" é de conexão baixa, inseguro, protocolo com comprimento fixo. Dois destes aspectos, UDP requer uma quantidade mínima de sobrecarga de protocolo.
tcp | O protocolo de controle de transmissão é uma conexão, seguro, fluxo orientado, e protocolo de ida e volta. TCP garante que todos os pacotes de dados irão ser recebidos na ordem que eles são enviados. Se algum pacote está perdido de alguma maneira durante a comunicação, TCP irá automaticamente retransmitir o pacote até que o host de destino reconheça aquele pacote. Por razões de segurança e performance, o TCP implementa nele próprio decisões apropriadas de limite de octetos do diagrama de dados abaixo da camada de comunicação. Portanto, aplicações TCP devem permitir para possibilidades de registro de transmissões.

socket_create() retorna um socket resource em caso de sucesso, ou `FALSE` em caso de erro. O código de erro atual pode ser retornado chamando socket_last_error(). Esse código de erro deve ser passado para socket_strerror() para pegar uma explicação textual do erro.

> Nota: Se um inválido domain ou type é dado, socket_create() padrão é para `AF_INET` e `SOCK_STREAM` respectivamente e adicionamente emitem uma mensagem `E_WARNING`.

Veja também socket_accept(), socket_bind(), socket_connect(), socket_listen(), socket_last_error(), e socket_strerror().

Anterior | Principal | Próxima
socket_create_pair | Acima | socket_get_option