php multicast多播实现详解

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了php multicast多播实现详解相关的知识,希望对你有一定的参考价值。

什么是多播?

网络中存在3中传播形式,单播,广播,多播。

 1. 单播 : 就是1->1
 2. 广播 : 1->多(广播域内)
 3. 多播 : 1->组(一组ip)
  • 1
  • 2
  • 3
  • 4
  • 5
  • 1
  • 2
  • 3
  • 4
  • 5

依赖于ip协议实现

首先我们抛出一个问题,要是要你自己在网络中实现这种机制,你会怎么实现呢。
哈哈,我的设计大概会是这样。
设计思路 : 因为网络是通过ip协议来通信的,那我自然想到是否可以通过某一类标记来标志这种形式就是多播呢,答案肯定是可以的,其实别人也是这样实现的。下面看一张图。
  • 1
  • 2
  • 3
  • 1
  • 2
  • 3

技术分享

D类IP地址(224.0.0.0到239.255.255.255)标记为多播地址。
是吧,别人也这样实现啦。
下面贴出php代码来给大家证明一把。
  • 1
  • 2
  • 3
  • 1
  • 2
  • 3

multicast_client.php文件

    $len = 80;
    $flags = 0;
    $from = "";
    $port = 14446;
    $group_params = array(
        "group" => "228.5.6.7",
        "interface" => "eth0"
        );
    $socket = socket_create(AF_INET, SOCK_DGRAM, SOL_UDP);
    socket_bind($socket, ‘0.0.0.0‘, $port);
    socket_set_option($socket, IPPROTO_IP, MCAST_JOIN_GROUP, $group_params);
    socket_recvfrom($socket, $recvStr, $len, $flags, $from, $port);
    echo "Received" . $recvStr . " from " . $from;
    socket_close($socket);
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14

multicast_server.php文件

    $port = 14446;
    $group_ip = ‘228.5.6.7‘;
    $group_params = array(
        "group" => $group_ip,
        "interface" => "eth0"
        );

    $send_msg = "hello , i am multicast server";
    $socket = socket_create(AF_INET, SOCK_DGRAM, SOL_UDP);

    socket_set_option($socket, IPPROTO_IP, MCAST_JOIN_GROUP, $group_params);
    socket_sendto($socket, $send_msg, strlen($send_msg), 0, $group_ip, $port);
    socket_close($socket);
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14

技术分享

技术分享

以上是关于php multicast多播实现详解的主要内容,如果未能解决你的问题,请参考以下文章

《TCP/IP详解卷1:协议》第12章 广播和多播---读书笔记

第六篇:协调和协定之组通信

PHP向客户端广播信息

NodeJS 数据报 - 接收 IPv6 多播

TCP/IP入门8.单播/广播/多播/任播

单播多播(组播)和广播的差别