1--TEST-- 2swoole_socket_coro: unix dgram 3--SKIPIF-- 4<?php require __DIR__ . '/../include/skipif.inc'; ?> 5--FILE-- 6<?php 7require __DIR__ . '/../include/bootstrap.php'; 8go(function () { 9 @unlink('/tmp/test-server.sock'); 10 $server = new Swoole\Coroutine\Socket(AF_UNIX, SOCK_DGRAM, IPPROTO_IP); 11 $server->bind('/tmp/test-server.sock'); 12 go(function () use ($server) { 13 while ($data = $server->recvfrom($peer)) { 14 Assert::same($data, 'hello'); 15 $server->sendto($peer['address'], 0, 'world'); 16 } 17 var_dump($peer); 18 }); 19 go(function () use ($server) { 20 @unlink('/tmp/test-client.sock'); 21 $client = new Swoole\Coroutine\Socket(AF_UNIX, SOCK_DGRAM, IPPROTO_IP); 22 $client->bind('/tmp/test-client.sock'); 23 $peer = []; 24 for ($n = MAX_REQUESTS; $n--;) { 25 $client->sendto('/tmp/test-server.sock', 0, 'hello'); 26 $data = $client->recvfrom($peer); 27 Assert::notEmpty($data); 28 if (empty($data)) { 29 break; 30 } 31 Assert::same($data, 'world'); 32 } 33 var_dump($peer); 34 $client->close(); 35 $server->close(); 36 }); 37}); 38Swoole\Event::wait(); 39echo "DONE\n"; 40?> 41--EXPECT-- 42array(2) { 43 ["address"]=> 44 string(21) "/tmp/test-server.sock" 45 ["port"]=> 46 int(0) 47} 48array(2) { 49 ["address"]=> 50 string(21) "/tmp/test-client.sock" 51 ["port"]=> 52 int(0) 53} 54DONE 55