diff --git a/README.md b/README.md index f5309cd..c041443 100644 --- a/README.md +++ b/README.md @@ -21,3 +21,10 @@ Run > > telnet 127.0.0.1 4444 + +--------------------- + +Run for better debugging of incoming bytes. Output is similar to Unix command ```hexdump -C``` + +> php server-hexdump.php + diff --git a/server-hexdump.php b/server-hexdump.php new file mode 100644 index 0000000..29c44a7 --- /dev/null +++ b/server-hexdump.php @@ -0,0 +1,102 @@ +getAddress(), $client->getPort() ); + //echo "client: ".print_r($client,true)."\n"; + printf( " PID Addr Hex-Values Characters\n"); + printf( "==============================================================\n"); + while( true ) { + $read = $client->read(); + if( $read != '' ) { + $client->send( '[' . date( DATE_RFC822 ) . '] ' . $read ); + } + else { + break; + } + + if( preg_replace( '/[^a-z]/', '', $read ) == 'exit' ) { + break; + } + if( $read === null ) { + printf( "[%s] Disconnected\n", $client->getAddress() ); + return false; + } + else { + //printf( "%d [%s] recieved: %s\n", getmypid(), $client->getAddress(), $read ); + $len=strlen($read); + printf( "%6d recieved: %d (%04X) Bytes:\n", getmypid(),$len,$len); + $adresse=0; + for ($i=0; $i<$len+(8-($len%8)); $i++) { + if ($i % 8 == 0) + printf("%6d %04X: ",getmypid(),$adresse); + if (($i % 4) ==0) + echo " "; + if ($i<$len) { + $zeichen=substr($read,$i,1); + printf("%02x ",ord($zeichen)); + } else { + echo " "; + } + if (($i+1)%8==0) { + echo " |"; + for ($j=$adresse; $j<$adresse+8; $j++) { + if ($j>=$len) { + echo " "; + continue; + } + $zeichen=substr($read,$j,1); + if (ctype_print($zeichen)) + echo $zeichen; + else { + $zeichen = addcslashes($zeichen,"\n\r\t"); + if (ctype_print($zeichen)) + echo $zeichen; + else + echo "."; + } + } + echo "|\n"; + $adresse += 8; + } + + } + } + } + $client->close(); + printf( "[%s] Disconnected\n", $client->getAddress() ); + +} + +require "sock/SocketServer.php"; + +$server = new \Sock\SocketServer(); +$server->init(); +$server->setConnectionHandler( 'onConnect' ); +$server->listen();