(PHP 4 >= 4.1.0, PHP 5, PHP 7)
socket_create — Cria um socket (endpoint para comunicação)
$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.
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.
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.
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
outype
é dado, socket_create() padrão é paraAF_INET
eSOCK_STREAM
respectivamente e adicionamente emitem uma mensagemE_WARNING
.
Veja também socket_accept(), socket_bind(), socket_connect(), socket_listen(), socket_last_error(), e socket_strerror().