12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152 |
- <?php
- /**
- * TCP Client DEMO
- */
- if ($argc < 4) {
- die("Usage: {$argv[0]} SERVER_IP SERVER_PORT CMD COUNT DELAY_MS\n");
- }
- include __DIR__ . '/../lib/message.php';
- $cnt = $argc > 4 ? intval($argv[4]) : 1;
- $delay = ($argc > 5 ? intval($argv[5]) : 100) * 1000;
- $service = "tcp://{$argv[1]}:{$argv[2]}";
- $s = stream_socket_client($service, $errno, $error);
- if (!$s) {
- die("stream_socket_client({$service}) error:#{$errno},{$error}");
- }
- for ($i = 0; $i < $cnt; $i++) {
- $req = new Message();
- $req->set('cmd', $argv[3]);
- if (!fwrite($s, $req->toBuffer())) {
- echo "fwrite() error!\n";
- break;
- }
- $data = fread($s, 4);
- if ($data) {
- if (strlen($data) != 4) {
- die("fread() return " . bin2hex($data) . "\n");
- }
- $arr = unpack('N', $data);
- $len = $arr[1];
- $data = '';
- $rest = $len;
- do {
- $ndata = fread($s, $rest);
- if (!$ndata) {
- break;
- }
- $data .= $ndata;
- $rest -= strlen($ndata);
- } while ($rest > 0);
- if ($len > 1024) {
- echo "[{$len}] --> " . substr($data, 0, 1024) . " ...\n";
- } else {
- echo "[{$len}] --> {$data}\n";
- }
- }
- usleep($delay);
- }
- fclose($s);
|