Visualizzazione risultati 1 fino 4 di 4

Discussione: server telnet in PHP

  1. #1
    L'avatar di radioradianti
    radioradianti non è connesso Utente storico
    Data registrazione
    26-11-2003
    Residenza
    Roma
    Messaggi
    1,000

    Question server telnet in PHP

    Girando in rete e leggendo qualche rivista ho trovato un piccolissimo script in PHP che funzionava da web server.
    Nulla di eclatante, ma mi ha incuriosito tanto da fare questa domanda :

    E' possibile realizzare un telnet server in PHP?

    Se si, qualcuno sa darmi qualche suggerimento, vorrei realizzarne uno stupidissimo per delle prove con palmari in radioFrequenza.

    Molti mi hanno detto che il Java si presta mooolto di più per queste cose, ma tentar non nuoce no?

    :grin:

    Leandro

    E' on line il numero 12 di Topolinux - Totalmente rinnovato!
    TopoLinux è anche chat! irc.azzurra.org canale #topolinux
    La semplicità di questo dono è inversamente proporzionale alla qualità della nostra amicizia

  2. #2
    Guest

    Predefinito

    Holà !!!
    Bhe diciamo che con PHP si può fare proprio tutto !!!!
    Allora se installi su una macchina apache+php installa i moduli per le socket, e leggi un pò nel manuale php...... rfc vari.... una 10 di pacchetti di sigarette... 4 macchinette di caffè....., impegno ed un pò di estro... e vedrai che il risultato è sicuro!!!

    Sennò se installi il tutto su winzoz puoi sdarti ancora di + andando a spippolare nelle coms.

    Unico inconveniente è che cmq qualsiasi cosa tu faccia, tieni d'occhio le coronarie :-))))))

  3. #3
    L'avatar di radioradianti
    radioradianti non è connesso Utente storico
    Data registrazione
    26-11-2003
    Residenza
    Roma
    Messaggi
    1,000

    Predefinito

    Beh che dire?
    Le coronarie spero vadano bene :-)

    Sei stato abbastanza esaustivo, cercherò di fare del mio meglio.
    Ovviamente su Linux. :-P


    Grazie

    Leandro

    E' on line il numero 12 di Topolinux - Totalmente rinnovato!
    TopoLinux è anche chat! irc.azzurra.org canale #topolinux
    La semplicità di questo dono è inversamente proporzionale alla qualità della nostra amicizia

  4. #4
    L'avatar di radioradianti
    radioradianti non è connesso Utente storico
    Data registrazione
    26-11-2003
    Residenza
    Roma
    Messaggi
    1,000

    Red face

    i pacchetti di sigarette sono stati molti meno, diciamo 1,5 :-)
    le coronarie si sono comportate bene e il caffè è finito.
    Sono comunque riuscito a giungere ad una conclusione ed ho scritto 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

    E' on line il numero 12 di Topolinux - Totalmente rinnovato!
    TopoLinux è anche chat! irc.azzurra.org canale #topolinux
    La semplicità di questo dono è inversamente proporzionale alla qualità della nostra amicizia

Regole di scrittura

  • Non puoi creare nuove discussioni
  • Non puoi rispondere ai messaggi
  • Non puoi inserire allegati.
  • Non puoi modificare i tuoi messaggi
  •