socket_recvmsg.phpt 1.9 KB

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