Crea un socket secuenciado o tipo datagrama en el socket_local especificado. El tipo de socket creado es determinado por el transporte especificado usando el formato de URL est谩ndar: transporte://destino. Para sockets de Dominio de Internet (AF_INET) tales como TCP y UDP, la porci贸n destino del par谩metro socket_remoto debe consistir de un nombre de host o direcci贸n IP, seguido de un signo de dos puntos y un n煤mero de puerto. Para sockets de dominio Unix, la porci贸n destino debe apuntar al archivo de socket en el sistema de archivos. banderas es un campo de m谩scara de bits que puede definirse como una combinaci贸n de banderas de creaci贸n de sockets. El valor predeterminado de banderas es STREAM_SERVER_BIND | STREAM_SERVER_LISTEN.
Nota: Para sockets UDP, debe usar STREAM_SERVER_BIND como el par谩metro banderas.
Esta funci贸n solo crea un socket, para empezar a aceptar conexiones use stream_socket_accept().
Si la llamada falla, devolver谩 FALSE y si los argumentos opcionales errno y errstr est谩n presentes, 茅stos ser谩n definidos de forma tal que indiquen el error de nivel de sistema actual que ha ocurrido en los llamados de sistema socket(), bind(), y listen(). Si el valor devuelto en errno es 0 y la funci贸n ha devuelto FALSE, es un indicio de que el error ocurri贸 antes del llamado a bind(). Esto, por lo general, es debido a un problema en la inicializaci贸n del socket. Note que los argumentos errno y errstr siempre ser谩n pasados por referencia.
Dependiendo del entorno, los sockets de dominio Unix pueden no estar disponibles. Una lista de transportes disponibles puede ser recuperada usando stream_get_transports(). Vea Ap茅ndice O para consultar una lista de transportes integrados.
El siguiente ejemplo muestra como actuar como servidor de hora, el cual puede responder a consultas sobre la hora actual, tal y como se muestra en un ejemplo ubicado en la p谩gina sobre stream_socket_client().
Nota: La mayor铆a de sistemas requieren acceso de root para crear un socket de servidor en un puerto menor a 1024.
Ejemplo 2. Uso de sockets de servidor UDP
|
Nota: Cuando se especifique una direcci贸n num茅rica IPv6 (p.ej. fe80::1) se debe incluir la IP entre corchetes. Por ejemplo tcp://[fe80::1]:80.
Vea tambi茅n stream_socket_client(), stream_set_blocking(), stream_set_timeout(), fgets(), fgetss(), fwrite(), fclose(), feof(), y la extensi贸n Curl.