La extensión de sockets implementa una interfaz de bajo
nivel con las funciones de comunicación de sockets,
basadas en los populares sockets BSD, ofreciendo la posibilidad
de actuar como un servidor de sockets, así como cliente.
Cuando use estas funciones, es importante recordar que, aunque
muchas de ellas tienen nombres idénticos a sus
contrapartes en C, usualmente cuentan con declaraciones
distintas. Por favor, asegúrese de leer las descripciones,
con el propósito de evitar confusiones.
Aquellos que no se encuentran familiarizados con
programación de sockets, pueden encontrar una gran
cantidad de material útil en las páginas man de
Unix apropiadas, y existe una enorme cantidad de
información estilo tutorial sobre programación de
sockets en C en la web, mucha de la cual puede aplicarse, con
ligeras modificaciones, a la programación de sockets en
PHP. El FAQ de Sockets Unix
puede ser un buen comienzo.
Aviso
Esta extensión es
EXPERIMENTAL. Esto significa que el
comportamiento de esta extensión, los nombre de sus funciones y
en definitiva TODO lo documentado sobre esta extensión, puede
cambiar en una futura versión de PHP SIN AVISO. La advertencia
queda hecha, y utilizar esta extensión queda bajo su propia
responsabilidad.
The socket functions described here are part of an extension to
PHP which must be enabled at compile time by giving the --enable-sockets option to
configure.
Nota: El soporte para IPv6 fue agregado
en PHP 5.0.0 .
Estas constantes están
definidas por esta extensión y estarán disponibles
solamente cuando la extensión ha sido o bien compilada dentro
de PHP o grabada dinámicamente en tiempo de ejecución.
La extensión de sockets fue escrita para ofrecer una
interfaz usable a los poderosos sockets BSD. Se ha tenido cuidado
para que las funciones trabajen igualmente bien en
implementaciones Win32 y Unix. Casi todas las funciones de
sockets pueden fallar bajo ciertas condiciones y por lo tanto
emiten un mensaje E_WARNING que describe el
error. Algunas veces esto no ocurre conforme al deseo del
desarrollador. Por ejemplo, la
función socket_read() puede emitir
repentinamente un mensaje E_WARNING debido a
que la conexión ha sido cerrada inesperadamente. Es
común suprimir la advertencia con el
operador @ y atrapar el código de error
dentro de la aplicación con la
función socket_last_error(). Puede
llamar la función socket_strerror() con
éste código de error para recuperar una cadena que
describe el error. Vea su descripción para más
información.
Nota:
Los mensajes E_WARNING generados por la
extensión de sockets se encuentran en Inglés,
aunque el mensaje de error recuperado aparecerá
dependiendo de la localidad actual
(LC_MESSAGES):
Warning - socket_bind() unable to bind address [98]: Die Adresse wird bereits verwendet
Ejemplo 1. Ejemplo de Socket: Servidor TCP/IP simple
Este ejemplo le muestra un servidor simple que repite de vuelta
su entrada. Modifique las
variables direccion y
puerto para que se acomoden a su
configuración y ejecútelo. Puede entonces
conectarse con el servidor mediante un comando similar
a: telnet 192.168.1.53 10000 (en donde la
dirección y el puerto se ajustan a su
configuración). Cualquier cosa que escriba será
entonces impresa en el lado del servidor, y devuelta a su
lado. Para desconectarse, ingrese 'salir'.
socket_getpeername --
Queries the remote side of the given socket which may either result in host/port
or in a Unix filesystem path, dependent on its type.
socket_getsockname --
Queries the local side of the given socket which may either result in host/port
or in a Unix filesystem path, dependent on its type.
socket_iovec_add -- Adds a new vector to the scatter/gather array
socket_iovec_alloc --
Builds a 'struct iovec' for use with sendmsg, recvmsg, writev, and readv