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";
?>
----------------
--
PHP General Mailing List (http://www.php.net/)
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]
To contact the list administrators, e-mail: [EMAIL PROTECTED]