socket_getpeername_ipv6loop.phpt 1.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566
  1. --TEST--
  2. ext/sockets - socket_getpeername_ipv6loop - basic test
  3. --CREDITS--
  4. # TestFest 2009 - NorwayUG
  5. # $Id: socket_getpeername_ipv6loop.phpt 494 2009-06-09 20:38:05Z tatjana.andersen@redpill-linpro.com $
  6. --SKIPIF--
  7. <?php
  8. if (!extension_loaded('sockets')) {
  9. die('skip sockets extension not available.');
  10. }
  11. require 'ipv6_skipif.inc';
  12. ?>
  13. --FILE--
  14. <?php
  15. /* Bind and connect sockets to localhost */
  16. $localhost = '::1';
  17. /* Setup socket server */
  18. $server = socket_create(AF_INET6, SOCK_STREAM, getprotobyname('tcp'));
  19. if (!$server) {
  20. die('Unable to create AF_INET6 socket [server]');
  21. }
  22. $minport = 31337;
  23. $maxport = 31356;
  24. $bound = false;
  25. for($port = $minport; $port <= $maxport; ++$port) {
  26. if (socket_bind($server, $localhost, $port)) {
  27. $bound = true;
  28. break;
  29. }
  30. }
  31. if (!$bound) {
  32. die('Unable to bind to '.$localhost);
  33. }
  34. if (!socket_listen($server, 2)) {
  35. die('Unable to listen on socket');
  36. }
  37. /* Connect to it */
  38. $client = socket_create(AF_INET6, SOCK_STREAM, getprotobyname('tcp'));
  39. if (!$client) {
  40. die('Unable to create AF_INET6 socket [client]');
  41. }
  42. if (!socket_connect($client, $localhost, $port)) {
  43. die('Unable to connect to server socket');
  44. }
  45. /* Accept that connection */
  46. $socket = socket_accept($server);
  47. if (!$socket) {
  48. die('Unable to accept connection');
  49. }
  50. if (!socket_getpeername($client, $address, $peerport)) {
  51. die('Unable to retrieve peer name');
  52. }
  53. var_dump($address, $port === $peerport);
  54. socket_close($client);
  55. socket_close($socket);
  56. socket_close($server);
  57. ?>
  58. --EXPECT--
  59. string(3) "::1"
  60. bool(true)