在路上...

The development of life
我们一直都在努力,有您的支持,将走得更远...

站内搜索: Google

  :: 首页 :: 博问 :: 闪存 :: 新随笔 :: 联系 :: 订阅 订阅 :: 管理 ::

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:指定当发送主机是多点广播组的成员时,是否将出局多点广播数据报的副本传送至发送主机。

 

注意:
OS/400 套接字支持对 AF_INET 地址系列使用 IP 多点广播。


下图显示用于使用 AF_INET 地址系列的 IP 多点广播的套接字调用流。

套接字事件流:发送多点广播数据报
以下套接字调用序列提供图形的描述。它还描述发送和接收多点广播数据报的两个应用程序之间的关系。每一组流包含指向有关特定 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() 函数返回表示端点的套接字描述符。该语句还标识将对此套接字使用带有 TCP 传输(SOCK_DGRAM)的 INET(网际协议)地址系列。此套接字会将数据报发送至另一应用程序。
  2. setsockopt() 函数设置 SO_REUSEADDR 套接字选项,以允许多个应用程序接收目标为同一本地端口号的数据报。
  3. bind() 函数指定本地端口号。在此示例中,IP 地址被指定为 INADDR_ANY 以接收发送至多点广播组的数据报。
  4. setsockopt() 函数使用 IP_ADD_MEMBERSHIP 套接字选项,它将加入接收数据报的多点广播组。在加入组时,指定 D 类组地址和本地接口的 IP 地址。系统必须对接收多点广播数据报的每个本地接口调用 IP_ADD_MEMBERSHIP 套接字选项。在此示例中,将在本地 9.5.1.1 接口上加入多点广播组(225.1.1.1)。
    注意:
    必须对通过其接收多点广播数据报的每个本地接口调用 IP_ADD_MEMBERSHIP 选项。
  5. read() 函数读取正在发送的多点广播数据报。
  6. close() 函数关闭所有打开的套接字描述符。
posted on 2009-08-25 15:49  palam  阅读(582)  评论(0编辑  收藏  举报