Red de conocimiento informático - Espacio del host - Me gustaría preguntar cuál es el flujo de trabajo del socket PHP.

Me gustaría preguntar cuál es el flujo de trabajo del socket PHP.

PHP utiliza la biblioteca de sockets de Berkley para crear sus conexiones. Puedes saber que el socket es solo una estructura de datos. Utilice esta estructura de datos de socket para iniciar una sesión entre el cliente y el servidor. Este servidor siempre está escuchando y preparándose para generar una nueva sesión. Cuando un cliente se conecta al servidor, abre un puerto en el que el servidor está escuchando una sesión. En este momento, el servidor acepta la solicitud de conexión del cliente y luego realiza un ciclo. Ahora el cliente puede enviar información al servidor y el servidor puede enviar información al cliente.

Para generar un Socket, necesitas tres variables: un protocolo, un tipo de socket y un tipo de protocolo público. Hay tres protocolos para elegir al generar un socket. Continúe leyendo a continuación para obtener contenido detallado del protocolo.

Definir un tipo de protocolo público es un elemento esencial para la conexión. En la siguiente tabla echamos un vistazo a los tipos de protocolos públicos.

Tabla 1: Protocolo

Nombre/descripción de la constante

AF_INET Son la mayoría de los protocolos utilizados para generar sockets, utilizando TCP o UDP para la transmisión.

AF_INET6 es similar al anterior, pero se usa para direcciones IPv6

Protocolo local AF_UNIX, usado en sistemas Unix y Linux, rara vez se usa, generalmente se usa cuando el cliente y el servidor está en la misma máquina

Tabla 2: Tipo de socket

Nombre/descripción constante

SOCK_STREAM Este protocolo está en secuencia Un flujo de bytes confiable e integrado en datos -conexión basada. Este es el tipo de socket más utilizado. Este socket utiliza TCP para la transmisión.

SOCK_DGRAM Este protocolo es una llamada de transferencia de longitud fija y sin conexión. Este protocolo no es confiable y utiliza UDP para sus conexiones.

SOCK_SEQPACKET Este protocolo es una conexión confiable de doble línea que envía paquetes de datos de longitud fija para su transmisión. Este paquete debe aceptarse por completo antes de poder leerlo.

SOCK_RAW Este tipo de socket proporciona acceso único a la red. Este tipo de socket utiliza el protocolo público ICMP. (ping y traceroute usan este protocolo)

SOCK_RDM Este tipo rara vez se usa y no está implementado en la mayoría de los sistemas operativos. Se proporciona para que lo utilice la capa de enlace de datos y no garantiza el orden de los paquetes de datos.

Tabla 3: Protocolo público ***

Nombre/Descripción constante

Protocolo de mensajes de control de Internet ICMP, utilizado principalmente en puertas de enlace y hosts para verificar el estado de la red y informar mensajes de error

Protocolo de datagramas de usuario UDP, que es un protocolo de transmisión no confiable y sin conexión

Protocolo de control de transmisión TCP, que es el protocolo de transmisión confiable más utilizado Un protocolo público que garantiza que Los paquetes de datos pueden llegar al destinatario. Si se produce un error durante la transmisión, reenviará el paquete de error.

Ahora que conoces los tres elementos que generan un socket, usamos la función socket_create() en PHP para generar un socket. Esta función socket_create() requiere tres parámetros: un protocolo, un tipo de socket y un protocolo público. La función socket_create() devuelve un tipo de recurso que contiene el socket si tiene éxito, o false si falla.

Resource socket_create(int protocol, int socketType, int commonProtocol);

Ahora generas un socket, ¿y luego qué? PHP proporciona varias funciones para manipular sockets. Puede vincular un socket a una IP, escuchar la comunicación de un socket y aceptar un socket. Ahora veamos un ejemplo para comprender cómo la función genera, acepta y escucha un socket.

lt;?php

$commonProtocol = getprotobyname("tcp");

$socket = socket_create(AF_INET, SOCK_STREAM, $commonProtocol);

p>

socket_bind($socket, 'localhost', 1337);

socket_listen($socket);

// Más funciones de socket por venir gt ;

El ejemplo anterior genera su propio servidor. La primera línea del ejemplo,

$commonProtocol = getprotobyname("tcp");

Utilice el nombre del protocolo público para obtener un tipo de protocolo. Aquí se utiliza el protocolo público TCP. Si desea utilizar el protocolo UDP o ICMP, debe cambiar los parámetros de la función getprotobyname() a "udp" o "icmp". Una alternativa es no utilizar la función getprotobyname() sino especificar SOL_TCP o SOL_UDP en la función socket_create().

$socket = socket_create(AF_INET, SOCK_STREAM, SOL_TCP);

La segunda línea del ejemplo genera un socket y devuelve una instancia del recurso de socket. Una vez que tenga una instancia del recurso de socket, debe vincular el socket a una dirección IP y un puerto.