Sono finalmente riuscito a scrivere questo smplicissimo codice funzionante :

<?php
//--------------------//
// TEST Telnet server //
//--------------------//


error_reporting(E_ALL);

//Attesa di connessione illimitata
//--------------------------------
set_time_limit(0);

//Abilita lo scarico dell'output
//------------------------------
ob_implicit_flush();

//Definizione indirizzo IP e porta di comunicazione
//-------------------------------------------------
$address = '127.0.0.1';
$port = 23;

//Creazione del socket
//--------------------
if (($sock = socket_create(AF_INET, SOCK_STREAM, SOL_TCP)) < 0) {
echo "socket_create() fallito: motivo: " . socket_strerror($sock) . "\n";
}

//Eseguo il bind del nome
//-----------------------
if (($ret = socket_bind($sock, $address, $port)) < 0) {
echo "socket_bind() fallito: motivo: " . socket_strerror($ret) . "\n";
}

//Metto in attesa di richieste il socket
//--------------------------------------
if (($ret = socket_listen($sock, 5)) < 0) {
echo "socket_listen() fallito: motivo: " . socket_strerror($ret) . "\n";
}

//Loop di ricezione
//-----------------
do {
if (($msgsock = socket_accept($sock)) < 0) {
echo "socket_accept() fallito: motivo: " . socket_strerror ($msgsock) . "\n";
break;
}
//Preparazione del messaggio da inviare
//-------------------------------------
$msg = "Test Telnet Sever\r\n\r\n".
"=================\r\n\r\n".
"1 -> Opzione1\r\n".
"2 -> Opzione2\r\n".
"3 -> Opzione3\r\n".
"4 -> Logout\r\n";

//Invio del messaggio
//-------------------
socket_write($msgsock, $msg, strlen($msg));

//Azzeramento del buffer di ricezione
//-----------------------------------
$buf="";

do {
//Eseguo la lettura dei dati inviati dal client
//---------------------------------------------
if (FALSE === ($buf = socket_read($msgsock, 1,0))) {
echo "socket_read() fallito: motivo: " . socket_strerror($ret) . "\n";
break 2;
}

//Entro nel controllo soltanto se è stato premuto INVIO
//-----------------------------------------------------
if ($buf == chr(13))
{
$buf='';
if ($talkback == '1')
{
socket_write($msgsock, "Opzione1", 9);
continue;
}
if ($talkback == '2')
{
socket_write($msgsock, "Opzione2", 9);
continue;
}
if ($talkback == '3')
{
socket_write($msgsock, "Opzione3", 9);
continue;
}
if ($talkback == '4')
{

socket_close($msgsock);
break 2;
}
//Azzero il buffer di ritorno
//---------------------------
$talkback="";
}
$talkback .= $buf;
//Invio l'echo del carattere digitato e/o premuto al client
//---------------------------------------------------------
socket_write($msgsock, $buf, strlen ($talkback));

//Visualizzo il carattere digitato dal client sul server
//------------------------------------------------------
echo "$buf\n";
} while (true);
socket_close($msgsock);
} while (true);

socket_close($sock);

?>
Però a questo punto mi sorge un dubbio che poi altro non è che il mio problema attule.
Come posso gestire più connessioni a questo sever contemporaneamente?
Mi spiago meglio
Avviato questo piccolo server, riesco a connettermi utilizzando :

telnet 127.0.0.1

ma se apro una nuova finestra e chiedo nuovamente la connessione al server questa mi risponde nisba, probabilmente perchè la precedente è ancora occupata.
C'è un sistema per gestire più connessioni????

Ringrazio in anticipo

Leandro