Puede que utilices la extensión de sockets de php y abras uno escuchando ese puerto, hasta ahora no lo he echo en php, sólo con C# porque es relativamente más rápido.
Ahh por cierto, todas las solicitudes HTML la recibe apache y son por el puerto 80, si utilizas apache, claro.
este es un código de ejemplo extraído del manual php:
Código PHP:
#!/usr/local/bin/php -q
<?php
error_reporting(E_ALL);
/* Permitir que el script permanezca en espera de conexiones. */
set_time_limit(0);
/* Habilitar vaciado de salida implicito, de modo que veamos lo que
* obtenemos a medida que va llegando. */
ob_implicit_flush();
$direccion = '192.168.1.53';
$puerto = 10000;
if (($sock = socket_create(AF_INET, SOCK_STREAM, SOL_TCP)) < 0) {
echo "socket_create() falló: motivo: " . socket_strerror($sock) . "\n";
}
if (($ret = socket_bind($sock, $direccion, $puerto)) < 0) {
echo "socket_bind() falló: motivo: " . socket_strerror($ret) . "\n";
}
if (($ret = socket_listen($sock, 5)) < 0) {
echo "socket_listen() falló: motivo: " . socket_strerror($ret) . "\n";
}
do {
if (($mens_sock = socket_accept($sock)) < 0) {
echo "socket_accept() falló: motivo " . socket_strerror($mens_sock) . "\n";
break;
}
/* Enviar instrucciones. */
$mensaje = "\nBienvenido al Servidor de Prueba PHP. \n" .
"Para salir, escriba 'salir'. " .
"Para detener el servidor, escriba 'detener'.\n";
socket_write($mens_sock, $mensaje, strlen($mensaje));
do {
if (false === ($buf = socket_read($mens_sock, 2048, PHP_NORMAL_READ))) {
echo "socket_read() falló: motivo: " . socket_strerror($ret) . "\n";
break 2;
}
if (!$buf = trim($buf)) {
continue;
}
if ($buf == 'salir') {
break;
}
if ($buf == 'detener') {
socket_close($mens_sock);
break 2;
}
$respuesta = "PHP: Usted dijo '$buf'.\n";
socket_write($mens_sock, $respuesta, strlen($respuesta));
echo "$buf\n";
} while (true);
socket_close($mens_sock);
} while (true);
socket_close($sock);
?>