分享

组播发送接收过程

 nxhujiee 2017-12-22

组播发送过程

IP 多点广播允许应用程序发送网络中的一组主机可以接收到的单个 IP 数据报。该组中的主机可能驻留在单个子网中,也可能驻留在连接可使用多点广播的路由器的不同子网中。主机可以随时加入或离开组。对主机组中的成员位置或数目没有任何限制。范围在 224.0.0.1 239.255.255.255 之间的 D 类因特网地址标识主机组。

应用程序可使用 socket() API 和无连接的 SOCK_DGRAM 类型套接字发送或接收多点广播数据报。多点广播是一种一对多的传送方法。不能使用类型为 SOCK_STREAM 的面向连接的套接字进行多点广播。在创建类型为 SOCK_DGRAM 的套接字后,应用程序可使用 setsockopt() 函数来控制与该套接字相关联的多点广播特征。setsockopt() 函数接受下列 IPPROTO_IP 级别标志:

  • IP_ADD_MEMBERSHIP:加入指定的多点广播组。
  • IP_DROP_MEMBERSHIP:离开指定的多点广播组。
  • IP_MULTICAST_IF:设置通过其发送出局多点广播数据报的接口。
  • IP_MULTICAST_TTL:在 IP 头中设置出局多点广播数据报的有效时间TTL)。
  • IP_MULTICAST_LOOP:指定当发送主机是多点广播组的成员时,是否将出局多点广播数据报的副本传送至发送主机。 

    套接字事件流:发送多点广播数据报
    以下套接字调用序列提供图形的描述。它还描述发送和接收多点广播数据报的两个应用程序之间的关系。每一组流包含指向有关特定 API 的使用注意事项的链接。如果需要有关使用特定 API 的更多详细信息,可使用这些链接。发送多点广播数据报使用以下函数调用序列:

    1. socket() 函数返回表示端点的套接字描述符。该语句还标识将对此套接字使用带有 TCP 传输(SOCK_DGRAM)的 INET(网际协议)地址系列。此套接字会将数据报发送至另一应用程序。
    2. sockaddr_in 结构指定目标 IP 地址和端口号。在此示例中,地址为 225.1.1.1,而端口号为 5555
    3. setsockopt() 函数设置 IP_MULTICAST_LOOP 套接字选项,所以发送系统不会接收它传送的多点广播数据报的副本。
    4. setsockopt() 函数使用 IP_MULTICAST_IF 套接字选项,它定义通过其发送多点广播数据报的本地接口。
    5. sendto() 函数将多点广播数据报发送至指定组 IP 地址。
    6. close() 函数关闭所有打开的套接字描述符。

    套接字事件流:接收多点广播数据报
    接收多点广播数据报
    使用以下函数调用序列:

    1. socket() 函数返回表示端点的套接字描述符。该语句还标识将对此套接字使用带有 UDP传输(SOCK_DGRAM)的 INET(网际协议)地址系列。此套接字会将数据报发送至另一应用程序。
    2. setsockopt() 函数设置 SO_REUSEADDR 套接字选项,以允许多个应用程序接收目标为同一本地端口号的数据报。
    3. bind() 函数指定本地端口号。在此示例中,IP 地址被指定为 INADDR_ANY 以接收发送至多点广播组的数据报。
    4. setsockopt() 函数使用 IP_ADD_MEMBERSHIP 套接字选项,它将加入接收数据报的多点广播组。在加入组时,指定 D 类组地址和本地接口的 IP 地址。系统必须对接收多点广播数据报的每个本地接口调用 IP_ADD_MEMBERSHIP 套接字选项。

    注意:

    必须对通过其接收多点广播数据报的每个本地接口调用 IP_ADD_MEMBERSHIP 选项。

    1. read() 函数读取正在发送的多点广播数据报。
    2. close() 函数关闭所有打开的套接字描述符。

     

以上是在网上找的资料,有张图不能直接粘贴,上传也传不上去。

 

 

 

 

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多