note 79314 added to function.socket-read

From: Date: Tue, 20 Nov 2007 15:59:03 +0000
Subject: note 79314 added to function.socket-read
Groups: php.notes 
Request: Send a blank email to php-notes+get-132436@lists.php.net to get a copy of this message
Another way to bypass the annoying thing with telnet, that send each character as a string ,is to check if the response is "\r\n", that is the string that telnet sends when the user presses enter. Here is an example: <?php error_reporting(E_ALL); /* Allow the script to hang around waiting for connections. */ set_time_limit(0); /* Turn on implicit output flushing so we see what we're getting * as it comes in. */ ob_implicit_flush(); $address = '127.0.0.1'; $port = 100; if (($sock = socket_create(AF_INET, SOCK_STREAM, SOL_TCP)) === false) { echo "socket_create() failed: reason: " . socket_strerror(socket_last_error()) . "\n"; } if (socket_bind($sock, $address, $port) === false) { echo "socket_bind() failed: reason: " . socket_strerror(socket_last_error($sock)) . "\n"; } else echo 'Socket ' . $address . ':' . $port . " has been opened\n"; if (socket_listen($sock, 5) === false) { echo "socket_listen() failed: reason: " . socket_strerror(socket_last_error($sock)) . "\n"; } else echo "Listening for new clients..\n"; $client_id = 0; do { if (($msgsock = socket_accept($sock)) === false) { echo "socket_accept() failed: reason: " . socket_strerror(socket_last_error($sock)) . "\n"; break; } else { $client_id += 1; echo "Client #" .$client_id .": Connect\n"; } /* Send instructions. */ $msg = "\nWelcome to the PHP Test Server. \n" . "To quit, type 'quit'. To shut down the server type 'shutdown'.\n"; socket_write($msgsock, $msg, strlen($msg)); $cur_buf = ''; do { if (false === ($buf = socket_read($msgsock, 2048))) { echo "socket_read() failed: reason: " . socket_strerror(socket_last_error($msgsock)) . "\n"; break 2; } if ($buf == "\r\n") { if ($cur_buf == 'quit') { echo 'Client #' .$client_id .': Disconnect' . "\n"; break; } if ($cur_buf == 'shutdown') { socket_close($msgsock); break 2; } //else { $talkback = "Unknown command: " . str_replace("\r\n", '\r\n', $cur_buf) ."\n"; socket_write($msgsock, $talkback, strlen($talkback)); // } echo 'Client #' .$client_id .': ' . $cur_buf . "\n"; $cur_buf = ''; } else $cur_buf .= $buf; } while (true); socket_close($msgsock); } while (true); socket_close($sock); ?> ---- Server IP: 69.147.83.197 Probable Submitter: 198.54.202.214 ---- Manual Page -- http://www.php.net/manual/en/function.socket-read.php Edit -- https://master.php.net/note/edit/79314 Del: integrated -- https://master.php.net/note/delete/79314/integrated Del: useless -- https://master.php.net/note/delete/79314/useless Del: bad code -- https://master.php.net/note/delete/79314/bad+code Del: spam -- https://master.php.net/note/delete/79314/spam Del: non-english -- https://master.php.net/note/delete/79314/non-english Del: in docs -- https://master.php.net/note/delete/79314/in+docs Del: other reasons-- https://master.php.net/note/delete/79314 Reject -- https://master.php.net/note/reject/79314 Search -- https://master.php.net/manage/user-notes.php

« previous php.notes (#132436) next »