socket_getpeername_ipv6loop.phpt 1.7 KB

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