(PHP 4, PHP 5)
fsockopen — Abre una conexión vía sockets a Internet o a un dominio Unix
$hostname
   [, int $port = -1
   [, int &$errno
   [, string &$errstr
   [, float $timeout = ini_get("default_socket_timeout")
  ]]]] )
   Inicia una conexión vía sockets al recurso especificado por
   hostname.
  
PHP soporta objetivos Internet y dominios Unix tal y como se describe en Lista de Transportes de Sockets Soportados. También se puede obtener una lista de los transportes soportados utilizando stream_get_transports().
El socket será abierto por defecto en modo de bloqueo. Es posible cambiarlo a modo de no bloqueo utilizando stream_set_blocking().
La función stream_socket_client() es similar, pero provee un conjunto más amplio de opciones, incluyendo conexión no bloqueante y la posibilidad de proporcionar contexto a una secuencia.
hostname
       Si el soporte a OpenSSL está
       instalado, puedes añadir al principio del hostname
       tanto ssl:// como tls:// para
       utilizar una conexión de cliente SSL o TLS sobre TCP/IP para conectar al
       host remoto.
      
portEl número de puerto.
errnoSi se proporciona, contiene el número de error a nivel de sistema que se ha producido en la llamada a connect() a nivel de sistema.
       Si el valor devuelto en errno es
       0 y la función devuelve FALSE, esto
       indica que el error ocurrió antes de
       la llamada a connect(). Probablemente se deba a un
       problema al inicializar el socket.
      
errstrEl mensaje de error como string.
timeoutEl tiempo límite de la conexión, en segundos.
Nota:
Si fuera necesario definir un tiempo de límite para leer/escribir datos a través del socket, se deberá utilizar stream_set_timeout(), ya que el parámetro
timeoutde fsockopen() sólo se aplica al realizar la conexión del socket.
   fsockopen() devuelve un puntero a fichero que puede ser utilizado
   junto a otras funciones de fichero (como
   fgets(), fgetss(),
   fwrite(), fclose(), y
   feof()). Si la llamada falla, devolverá FALSE
  
   Lanza E_WARNING si el hostname no es
   un dominio válido.
  
| Versión | Descripción | 
|---|---|
| 4.3.0 | Añadido soporte al parámetro timeouten
        win32. | 
| 4.3.0 | Añadido soporte a SSL y TLS sobre TCP/IP. | 
Ejemplo #1 Ejemplo de fsockopen()
<?php
$fp = fsockopen("www.example.com", 80, $errno, $errstr, 30);
if (!$fp) {
    echo "$errstr ($errno)<br />\n";
} else {
    $out = "GET / HTTP/1.1\r\n";
    $out .= "Host: www.example.com\r\n";
    $out .= "Connection: Close\r\n\r\n";
    fwrite($fp, $out);
    while (!feof($fp)) {
        echo fgets($fp, 128);
    }
    fclose($fp);
}
?>
Ejemplo #2 Utilización de una conexión UDP
El ejemplo inferior muestra cómo obtener el día y la hora del servicio UDP "daytime" (puerto 13) en el servidor local.
<?php
$fp = fsockopen("udp://127.0.0.1", 13, $errno, $errstr);
if (!$fp) {
    echo "ERROR: $errno - $errstr<br />\n";
} else {
    fwrite($fp, "\n");
    echo fread($fp, 26);
    fclose($fp);
}
?>
Nota:
Dependiendo del entorno, el dominio Unix o el tiempo de expiración opcional pueden no estar disponibles.
Los sockets UDP pueden en ocasiones aparecerán como abiertos sin errores, incluso aunque el servidor remoto no esté disponible. El error sólo aparecerá una vez se lean o escriban datos del/al socket. Esto es debido a que UDP es un protoclo "sin conexión", lo que significa que el sistema operativo no trata de establecer un enlace con el socket hasta que realmente necesita enviar o recibir datos.
Nota: Cuando se especifique una dirección numérica IPv6 (por ej., fe80::1), la IP debe ser encerrada entre corchetes — por ejemplo, tcp://[fe80::1]:80.