test.php 1.1 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152
  1. <?php
  2. /**
  3. * TCP Client DEMO
  4. */
  5. if ($argc < 4) {
  6. die("Usage: {$argv[0]} SERVER_IP SERVER_PORT CMD COUNT DELAY_MS\n");
  7. }
  8. include __DIR__ . '/../lib/message.php';
  9. $cnt = $argc > 4 ? intval($argv[4]) : 1;
  10. $delay = ($argc > 5 ? intval($argv[5]) : 100) * 1000;
  11. $service = "tcp://{$argv[1]}:{$argv[2]}";
  12. $s = stream_socket_client($service, $errno, $error);
  13. if (!$s) {
  14. die("stream_socket_client({$service}) error:#{$errno},{$error}");
  15. }
  16. for ($i = 0; $i < $cnt; $i++) {
  17. $req = new Message();
  18. $req->set('cmd', $argv[3]);
  19. if (!fwrite($s, $req->toBuffer())) {
  20. echo "fwrite() error!\n";
  21. break;
  22. }
  23. $data = fread($s, 4);
  24. if ($data) {
  25. if (strlen($data) != 4) {
  26. die("fread() return " . bin2hex($data) . "\n");
  27. }
  28. $arr = unpack('N', $data);
  29. $len = $arr[1];
  30. $data = '';
  31. $rest = $len;
  32. do {
  33. $ndata = fread($s, $rest);
  34. if (!$ndata) {
  35. break;
  36. }
  37. $data .= $ndata;
  38. $rest -= strlen($ndata);
  39. } while ($rest > 0);
  40. if ($len > 1024) {
  41. echo "[{$len}] --> " . substr($data, 0, 1024) . " ...\n";
  42. } else {
  43. echo "[{$len}] --> {$data}\n";
  44. }
  45. }
  46. usleep($delay);
  47. }
  48. fclose($s);