socket read byte by byte

From: Date: Thu, 20 Dec 2001 02:48:22 +0000
Subject: socket read byte by byte
Groups: php.general 
Request: Send a blank email to php-general+get-78286@lists.php.net to get a copy of this message
another question for the continuing saga .. I am trying to undertake a handshake with the telnet (tn3270) server .. using $get=socket_read($socket, 128, PHP_BINARY_READ ); i now need to step through $get byte by byte how do i do an equivilent fgetc? ie while (!feof($get)) { echo fgetc($iget); } but with the socket??? entire code below. ... cheers brendan ----------------------- <?php ################ SET BINARY CODES ############################# function makeChr($loud="off"){ for ($i = 0; $i < 256; ++$i) { static $genNum; $genNum++; $bin_array[$genNum]=(chr($genNum));
     if ($loud=="on") {
         echo "chr($genNum) will output '";
         echo (chr($genNum));
         echo "'<br> \n";
     }
} return $bin_array; } $bin_array= makeChr();
    $chr_array[0]="NUL"; /*                                    NULL (NUL)              0      No Operation    */
    $chr_array[1]="ARE";               //        1
   $chr_array[7]="BELL";          /*               Produces an audible or
                                        visible signal (which does
                                        NOT move the print head).*/
        $chr_array[7]="BS";     /*    Moves the print head one
                                        character position towards
                                        the left margin.   */
        $chr_array[9]="HT";  /*    Moves the printer to the
                                        next horizontal tab stop.
                                        It remains unspecified how
                                        either party determines or
                                        establishes where such tab
                                        stops are located. */
        $chr_array[10]="LF"; /*      Line Feed ()              Moves the printer to the
                                        next print line, keeping the
                                        same horizontal position.   */
        $chr_array[11]="VT"; /*   Moves the printer to the
                                        next vertical tab stop.  It
                                        remains unspecified how
                                        either party determines or
                                        establishes where such tab
                                        stops are located.   */
         $chr_array[12]="FF"; /*    Moves the printer to the top
                                        of the next page, keeping
                                        the same horizontal position. */
        $chr_array[13]="CR"; /* Carriage Return (CR)   13      Moves the printer to the left
                                        margin of the current line.     */
         $chr_array[29]="3270-REGIME"; /*  Telnet 3270 Regime Option
                                         rfc http://www.ietf.org/rfc/rfc1041.txt
                                       */
  $chr_array[240]="SE";                  /*       End of subnegotiation parameters. */
      $chr_array[241]="NOP";                     /* No operation. */
      $chr_array[242]="Data Mark";                   /*  The data stream portion of a Synch.*/
                                /* This should always be accompanied */
                                 /* by a TCP Urgent notification.*/
     $chr_array[243]="Break";                    /* NVT character BRK.*/
     $chr_array[244]="Interrupt Process";         /* The function IP.*/
     $chr_array[245]="Abort output";             /* The function AO.*/
     $chr_array[246]="Are You There";            /*  The function AYT.*/
     $chr_array[247]="Erase character"; /* The function EC. */
     $chr_array[248]="Erase Line";               /* The function EL.*/
     $chr_array[249]="Go ahead"; /* The GA signal. */
     $chr_array[250]="SB";       /* Indicates that what follows is
                                 subnegotiation of the indicated
                                 option. */
     $chr_array[251]="WILL";   /* Indicates the desire to begin
                                 performing, or confirmation that
                                 you are now performing, the
                                 indicated option.    */
     $chr_array[ 252]="WON'T";     /* Indicates the refusal to perform,
                                 or continue performing, the
                                 indicated option. */
     $chr_array[253]="DO";    /* Indicates the request that the
                                 other party perform, or
                                 confirmation that you are expecting
                                 the other party to perform, the
                                 indicated option. */
      $chr_array[254]="DON\'T";   /*Indicates the demand that the
                                 other party stop performing,
                                 or confirmation that you are no
                                 longer expecting the other party
                                 to perform, the indicated option. */
     $chr_array[255]="IAC";     //Data Byte 255.
################ SET BINARY CODES ############################# error_reporting (E_ALL); $port = '23'; $address = '202.14.186.30'; /* Create a TCP/IP socket. */ $socket = socket_create (AF_INET, SOCK_STREAM, 0); if ($socket < 0) {
    echo "socket_create() failed: reason: " . socket_strerror ($socket) . "\n";
} else {
    "socket_create() successful:\n";
} echo "Attempting to connect to '$address' on port '$port'..."; $result = socket_connect ($socket, $address, $port); if ($result < 0) {
    echo "socket_connect() failed.\nReason: ($result) " . socket_strerror($result) . "\n";
} else {
    echo "<BR>OK.\n";
} $get=socket_read($socket, 128, PHP_BINARY_READ );
     $tmp = fgetc($get);
     $tmp=array_search ($tmp,$bin_array);
     if ($tmp) echo "<BR>".$chr_array[$tmp]."<BR>";
echo "Closing socket..."; socket_close ($socket); echo "OK.\n\n"; ?> ----------------

« previous php.general (#78286) next »