udp6loop.phpt 1.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051
  1. --TEST--
  2. Streams Based IPv6 UDP Loopback test
  3. --SKIPIF--
  4. <?php
  5. /* If IPv6 is supported on the platform this will error out with code 111 -
  6. * Connection refused (or code 10049 on Windows). If IPv6 is NOT supported, $errno will be set to
  7. * something else (indicating parse/getaddrinfo error)
  8. * Note: Might be a good idea to export an IPv6 support indicator
  9. * (such as AF_INET6 exported by ext/sockets), however, since we
  10. * cannot tell for sure if IPv6 works until we probe it at run time,
  11. * this isn't really practical.
  12. */
  13. @stream_socket_client('tcp://[::1]:0', $errno);
  14. if ((PHP_OS_FAMILY === 'Windows' && $errno !== 10049) || (PHP_OS_FAMILY !== 'Windows' && $errno !== 111)) {
  15. die('skip IPv6 is not supported.');
  16. }
  17. ?>
  18. --FILE--
  19. <?php
  20. for ($i=0; $i<100; $i++) {
  21. $port = rand(10000, 65000);
  22. /* Setup socket server */
  23. $server = @stream_socket_server("udp://[::1]:$port", $errno, $errstr, STREAM_SERVER_BIND);
  24. if ($server) {
  25. break;
  26. }
  27. }
  28. if (!$server) {
  29. die('Unable to create AF_INET6 socket [server]');
  30. }
  31. /* Connect to it */
  32. $client = stream_socket_client("udp://[::1]:$port");
  33. if (!$client) {
  34. die('Unable to create AF_INET6 socket [client]');
  35. }
  36. fwrite($client, "ABCdef123\n");
  37. $data = fread($server, 10);
  38. var_dump($data);
  39. fclose($client);
  40. fclose($server);
  41. ?>
  42. --EXPECT--
  43. string(10) "ABCdef123
  44. "