Función PHP fsockopen(): Todo lo que necesitas saber
Aprende a usar la función fsockopen() de PHP para establecer conexiones de red TCP/IP y comunicarte con servidores. Referencia completa con ejemplos.
Como desarrollador PHP, puede que necesites establecer una conexión de red y comunicarte con otro servidor usando el protocolo TCP/IP. La función fsockopen() fsockopen() fsockopen() stream_socket_client() o cURL en su lugar. Este artículo explica la función heredada con fines de referencia y migración.
¿Qué es la función fsockopen()?
La función fsockopen() abre una conexión de red TCP/IP a un host y puerto especificados, lo que permite enviar y recibir datos mediante punteros de archivo.
Cómo usar la función fsockopen()
Usar la función fsockopen() es sencillo. Aquí está la sintaxis:
Sintaxis PHP
fsockopen($hostname, $port, &$errno, &$errstr, $timeout);La función acepta cinco parámetros:
$hostname: El nombre de host o dirección IP del servidor.$port: El número de puerto al que conectarse.&$errno: Una variable que almacena el número de error, si lo hay.&$errstr: Una variable que almacena el mensaje de error, si lo hay.$timeoutfsockopen()default_socket_timeoutstream_socket_client()inisi se omite.
Nota: Para conexiones seguras, añade el prefijo
ssl://tls://al nombre de host (por ejemplo,tls://example.com).
Aquí hay un ejemplo de cómo usar la función fsockopen() para establecer una conexión de red con un servidor y enviar/recibir datos:
Ejemplo de uso
<?php
$host = "example.com";
$port = 80;
$timeout = 30;
$fp = fsockopen($host, $port, $errno, $errstr, $timeout);
if (!$fp) {
echo "Error: $errstr ($errno)<br/>";
} else {
$out = "GET / HTTP/1.1\r\n";
$out .= "Host: $host\r\n";
$out .= "Connection: Close\r\n\r\n";
fwrite($fp, $out);
while (!feof($fp)) {
echo fgets($fp, 128);
}
fclose($fp);
}En este ejemplo, usamos la función fsockopen() fsockopen() example.com fgets() .
Nota: Para solicitudes HTTPS, usa
tls://como prefijo de la variable$host.
Conclusión
Aunque fsockopen() fsockopen() stream_socket_client() o cURL para proyectos nuevos. Esta referencia sigue siendo útil para el mantenimiento de bases de código heredadas.