live555如何判断一个IP地址是否为组播地址的

live555研究 专栏收录该内容
1 篇文章 0 订阅

在网络编程中,经常会遇到判断一个地址是否为组播地址的问题。live555同样需要解决这个问题。貌似很复杂,其实很简单。

这个代码在groupsock下的NetAdress.cpp文件中,代码如下:

Boolean IsMulticastAddress(netAddressBits address) {
  // Note: We return False for addresses in the range 224.0.0.0
  // through 224.0.0.255, because these are non-routable
  // Note: IPv4-specific #####
  netAddressBits addressInNetworkOrder = htonl(address);
  return addressInNetworkOrder >  0xE00000FF &&
         addressInNetworkOrder <= 0xEFFFFFFF;
}
首先这里接收的是netAddressBits类型的地址,netAddressBits是啥?看代码:

typedef u_int32_t netAddressBits; 
htonl()函数将主机数转换成无符号长整型的网络字节顺序,或者说是将一个32位数从主机字节顺序转换成网络字节顺序。啥是网络字节顺序?其实就是所谓的大端,一个数的高位字节存放于低地址单元,低位字节存放在高地址单元中。计算机的内存存储数据时有可能是大尾顺序或者小尾顺序,这里应该会判断一下,如果是小端的话就转换成大端模式。

如何判断的呢?我们知道组播的地址范围是224.0.0.0~239.0.0.0,写成16进制就是:

0xE00000FF~0xEFFFFFFF

所以这里就是判断一下接收的IPv4地址是否在这个范围之间。简单吧!



  • 0
    点赞
  • 0
    评论
  • 2
    收藏
  • 一键三连
    一键三连
  • 扫一扫,分享海报

©️2021 CSDN 皮肤主题: 大白 设计师:CSDN官方博客 返回首页
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、C币套餐、付费专栏及课程。

余额充值