如果用户输入“ 239.4.4.4”之类的IP地址,如何在Linux C中使用任何功能确定该IP地址是多播的?
IPv4组播地址由最高有效位定义1110,因此:
如果IP地址存储为32位无符号变量>> 28,则将a 应用于变量,然后检查结果是否为14(1110),例如isMulti = ((address >> 28) == 14);。
如果IP地址存储为4个无符号字符的元组,则检查第一个(MSB)是否在224和239之间(包括)。
小智 5
bool isMulticastAddress(in_addr_t s_addr)
{
//in_addr_t stored in network order
uint32_t address = ntohl(s_addr);
return (address & 0xF0000000) == 0xE0000000;
}
Run Code Online (Sandbox Code Playgroud)