socket_recvmsg.phpt 2.0 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192
  1. --TEST--
  2. recvmsg(): basic test
  3. --SKIPIF--
  4. <?php
  5. if (!extension_loaded('sockets')) {
  6. die('skip sockets extension not available.');
  7. }
  8. require 'ipv6_skipif.inc';
  9. if (!defined('IPPROTO_IPV6')) {
  10. die('skip IPv6 not available.');
  11. }
  12. if (!defined('IPV6_RECVPKTINFO')) {
  13. die('skip IPV6_RECVPKTINFO not available.');
  14. }
  15. ?>
  16. --FILE--
  17. <?php
  18. include __DIR__."/mcast_helpers.php.inc";
  19. $addr = '::1';
  20. echo "creating send socket\n";
  21. $sends1 = socket_create(AF_INET6, SOCK_DGRAM, SOL_UDP) or die("err");
  22. var_dump($sends1);
  23. $br = socket_bind($sends1, '::', 7001) or die("err");
  24. var_dump($br);
  25. socket_set_nonblock($sends1) or die("Could not put in non-blocking mode");
  26. echo "creating receive socket\n";
  27. $s = socket_create(AF_INET6, SOCK_DGRAM, SOL_UDP) or die("err");
  28. var_dump($s);
  29. $br = socket_bind($s, '::0', 3000) or die("err");
  30. var_dump($br);
  31. socket_set_option($s, IPPROTO_IPV6, IPV6_RECVPKTINFO, 1) or die("err");
  32. $r = socket_sendto($sends1, $m = "testing packet", strlen($m), 0, $addr, 3000);
  33. var_dump($r);
  34. if ($r < 12) die;
  35. checktimeout($s, 500);
  36. $data = [
  37. "name" => ["family" => AF_INET6, "addr" => "::1"],
  38. "buffer_size" => 2000,
  39. "controllen" => socket_cmsg_space(IPPROTO_IPV6, IPV6_PKTINFO),
  40. ];
  41. if (!socket_recvmsg($s, $data, 0)) die("recvmsg");
  42. print_r($data);
  43. --EXPECTF--
  44. creating send socket
  45. resource(%d) of type (Socket)
  46. bool(true)
  47. creating receive socket
  48. resource(%d) of type (Socket)
  49. bool(true)
  50. int(14)
  51. Array
  52. (
  53. [name] => Array
  54. (
  55. [family] => %d
  56. [addr] => ::1
  57. [port] => 7001
  58. [flowinfo] => 0
  59. [scope_id] => 0
  60. )
  61. [control] => Array
  62. (
  63. [0] => Array
  64. (
  65. [level] => %d
  66. [type] => %d
  67. [data] => Array
  68. (
  69. [addr] => ::1
  70. [ifindex] => %d
  71. )
  72. )
  73. )
  74. [iov] => Array
  75. (
  76. [0] => testing packet
  77. )
  78. [flags] => 0
  79. )