Código:
<html>
<head>
<title>Mi servidor</title>
</head>
<body>
<center><h1>Mi servidor</h1></center>
<?php
//muetra todos los errores que se presenten durante la ejecucion
error_reporting(E_ALL);
//Desabilia el tiempo de espera del scrip para permitir esperar conexiones.
set_time_limit(0);
//direccion de la maquina
$direccion = 'localhost';
//puerto de salida
$puerto = 10000;
//Crea el socket, recibe (dominio, tipo y protocolo) establecido por constates definidas por php
if (($socket = socket_create(AF_INET, SOCK_STREAM, SOL_TCP)) < 0)
{
echo "socket_create() Falló: Motivo: " . socket_strerror($puerto) . "<br>";
}
//Asocia la direccion y puerto de la maquina con el socket creado
if (($retorno = socket_bind($socket, $direccion, $puerto)) < 0)
{
echo "socket_bind() Falló: Motivo: " . socket_strerror($retorno) . "<br>";
}
//Pone el socket a escuchar solicitudes de conexión
if (($retorno = socket_listen($socket, 5)) < 0)
{
echo "socket_listen() Falló: Motivo: " . socket_strerror($retorno) . "<br>";
}
//el socket acepta la primer solicitud del cliente
do
{
if (($sock_acepted = socket_accept($socket)) < 0)
{
echo "socket_accept() Falló: Motivo: " . socket_strerror($sock_acepted) . "<br>";
}
//una vez aceptada la conexión se lee el primer paquete que escriba el cliente
$lectura = socket_read($sock_acepted, 2048);
//imprime lo que el cliente dice
echo "<b>Cliente dice: </b>" . $lectura . "<br>";
//Escribe al cliente una respuesta a lo que este dijo!
$escritura = 'Hola cliente!!!' . ' Me mandaste a decir: '. $lectura;
socket_write($sock_acepted, $escritura, 2048);
//cierra el socket
if ($lectura=="salir")
{
break;
}
}while(true);
socket_close($socket);
?>
</body>
</html>