udp_client.php 1.8 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374
  1. <?php
  2. class Client
  3. {
  4. private $ip = "127.0.0.1";
  5. const PORT = 8888;
  6. private $data;
  7. public function sendRequest()
  8. {
  9. $this->data = "swoole test";
  10. $this->send();
  11. $this->moreThanOneRecv();
  12. return $ret;
  13. }
  14. public function send()
  15. {
  16. $cli = new swoole_client_coro(SWOOLE_SOCK_UDP);
  17. $ret = $cli->connect($this->ip, self::PORT);
  18. $cli->send($this->data);
  19. $ret = $cli->recv();
  20. $cli->close();
  21. }
  22. public function moreThanOneRecv()
  23. {
  24. $cli = new swoole_client_coro(SWOOLE_SOCK_UDP);
  25. $ret = $cli->connect($this->ip, self::PORT);
  26. $cli->send("sent by cli");
  27. $cli2 = new swoole_client_coro(SWOOLE_SOCK_UDP);
  28. $ret = $cli2->connect($this->ip, self::PORT);
  29. $cli2->send("sent by cli2");
  30. $cli3 = new swoole_client_coro(SWOOLE_SOCK_UDP);
  31. $ret = $cli3->connect($this->ip, self::PORT);
  32. $cli3->send("sent by cli3");
  33. sleep(1);
  34. $ret = $cli3->recv();
  35. $ret = $cli2->recv();
  36. $ret = $cli->recv();
  37. return;
  38. }
  39. }
  40. class Server
  41. {
  42. public $server;
  43. public function run()
  44. {
  45. $this->server = new swoole_http_server("127.0.0.1", 9502);
  46. $this->server->set([
  47. 'worker_num' => 1,
  48. 'daemonize' => true,
  49. 'log_file' => '/tmp/swoole.log',
  50. ]);
  51. $this->server->on('Request',['Server', 'onRequest']);
  52. $this->server->start();
  53. }
  54. public static function onRequest($request, $response)
  55. {
  56. self::staticFunc();
  57. $cli = new swoole_client_coro(SWOOLE_SOCK_UDP);
  58. $client = new Client();
  59. $ret = $client->sendRequest();
  60. $response->end($ret);
  61. }
  62. }
  63. $server = new Server();
  64. $server->run();