ipv6loop.phpt 1.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657
  1. --TEST--
  2. IPv6 Loopback test
  3. --SKIPIF--
  4. <?php
  5. if (!extension_loaded('sockets')) {
  6. die('skip sockets extension not available.');
  7. }
  8. require 'ipv6_skipif.inc';
  9. ?>
  10. --FILE--
  11. <?php
  12. /* Setup socket server */
  13. $server = socket_create(AF_INET6, SOCK_STREAM, getprotobyname('tcp'));
  14. if (!$server) {
  15. die('Unable to create AF_INET6 socket [server]');
  16. }
  17. $bound = false;
  18. for($port = 31337; $port < 31357; ++$port) {
  19. if (socket_bind($server, '::1', $port)) {
  20. $bound = true;
  21. break;
  22. }
  23. }
  24. if (!$bound) {
  25. die("Unable to bind to [::1]:$port");
  26. }
  27. if (!socket_listen($server, 2)) {
  28. die('Unable to listen on socket');
  29. }
  30. /* Connect to it */
  31. $client = socket_create(AF_INET6, SOCK_STREAM, getprotobyname('tcp'));
  32. if (!$client) {
  33. die('Unable to create AF_INET6 socket [client]');
  34. }
  35. if (!socket_connect($client, '::1', $port)) {
  36. die('Unable to connect to server socket');
  37. }
  38. /* Accept that connection */
  39. $socket = socket_accept($server);
  40. if (!$socket) {
  41. die('Unable to accept connection');
  42. }
  43. socket_write($client, "ABCdef123\n");
  44. $data = socket_read($socket, 10, PHP_BINARY_READ);
  45. var_dump($data);
  46. socket_close($client);
  47. socket_close($socket);
  48. socket_close($server);
  49. ?>
  50. --EXPECT--
  51. string(10) "ABCdef123
  52. "