Código PHP:
#!/usr/bin/php
<?php
/*
Ejemplo 3. Serividor socket en php que acepta conexiones
*/
// ELIMITANDO EL TIEMPO LIMITE DE EJECUCIÓN DE UN SCRIPT (DEFAULT 30s)
set_time_limit(0);
ob_implicit_flush();
// DEFINIENDO VARIABLES
$host = "MI_NOMBRE.esy.es"; //Dirección de mi hosting gratuito
$puerto = "8080";
// ABRIENDO ARCHIVO DE LOG PARA LA ESCRITURA
$fp = fopen ("error.log", "a");
// CREANDO EL SOCKET: (IP PROTOCOL[IPV4], TYPE SOCKET[TCP], PROTOCOL[TCP])
if (!$socket = @socket_create(AF_INET, SOCK_STREAM, SOL_TCP)){
$log = "Fallo en socket_create:".socket_strerror($socket)."\n";
fwrite ($fp, $log);
print "Fallo al iniciar el servidor\n";
exit;}
// ASOCIANDO HOST Y PUERTO AL SOCKET
if (!$bind = @socket_bind($socket, $host, $puerto)){
$log = "Fallo en socket_bind:".socket_strerror($bind)."\n";
fwrite ($fp, $log);
print "Fallo al iniciar el servidor\n";
exit;}
// ESCUCHANDO LA CONEXIÓN DEL SOCKET
if (!$bind = @socket_listen($socket, 3)){
$log = "Fallo en socket_listen:".socket_strerror($bind)."\n";
fwrite ($fp, $log);
print "Fallo al iniciar el servidor\n";
exit;}
// ACEPTANDO LAS CONEXIONES SOCKET
while (TRUE) {
if (!$accept = @socket_accept($socket)){
$log = "Fallo en socket_accept:".socket_strerror($accept)."\n";
fwrite ($fp, $log);
print "Fallo al aceptar conexiones\n";}
// MENSAJE DE ESTABLECIMIENTO DE CONEXIÓN
$buffer = "\nConexión realizada\n";
// ESCRIBIMOS EN EL SOCKET EL MENSAJE DE ESTABLECIMIENTO DE CONEXIÓN
if (!@socket_write($accept, $buffer)){
$log = "Fallo al escribir en socket";
fwrite ($fp, $log);}
}
?>
La prueba del envío de sockets estoy haciendola con el programa "putty". Me estoy conectando a la dirección "MI_NOMBRE.esy.es" al puerto 8080 pero no logro que conecte.
Sé que algo estaré haciendo mal pero no sé el qué, por eso si alguien sabe como puedo solucionarlo o hay algo que pueda corregir se lo agradecería bastante.
Muchísimas gracias de antemano.
Saludos!