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
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 emdomain
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 correspondentesSOL_TCP
eSOL_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.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