tcp6loop.phpt 1.4 KB

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