1--TEST-- 2swoole_server: addlistener 3--SKIPIF-- 4<?php require __DIR__ . '/../include/skipif.inc'; ?> 5--FILE-- 6<?php 7require __DIR__ . '/../include/bootstrap.php'; 8 9$simple_tcp_server = __DIR__ . "/../include/api/swoole_server/opcode_server.php"; 10 11use Swoole\Server; 12 13$port1 = get_one_free_port(); 14 15$pm = new SwooleTest\ProcessManager; 16$pm->parentFunc = function ($pid) { 17 Co\Run(function () { 18 $cli = new Swoole\Coroutine\Client(SWOOLE_SOCK_UDP); 19 $r = $cli->connect(UDP_SERVER_HOST, UDP_SERVER_PORT, 1); 20 Assert::assert($r); 21 $cli->send("test"); 22 $i = $cli->getpeername(); 23 Assert::assert($i !== false); 24 $cli->send('shutdown'); 25 $cli->close(); 26 echo "SUCCESS\n"; 27 }); 28}; 29 30$pm->childFunc = function () use ($pm) { 31 $serv = new Server(UDP_SERVER_HOST, UDP_SERVER_PORT, SWOOLE_BASE, SWOOLE_SOCK_UDP); 32 $serv->set(["worker_num" => 1, 'log_file' => '/dev/null']); 33 $serv->on("WorkerStart", function (Server $serv) use ($pm) { 34 $pm->wakeup(); 35 }); 36 $serv->on("Packet", function (Server $serv, $data, $clientInfo) { 37 if (trim($data) == 'shutdown') { 38 $serv->shutdown(); 39 return; 40 } 41 $serv->sendto($clientInfo['address'], $clientInfo['port'], $data); 42 }); 43 $serv->start(); 44}; 45 46$pm->childFirst(); 47$pm->run(); 48?> 49--EXPECT-- 50SUCCESS 51