随机生成一个多播地址

网络地址字符串:以数字和点组成的字符串,例如:“163.13.132.68”。

网络地址字符串(232.0.1.0)  转 二进制(0xE8000100)   

const char* cp = "232.0.1.0";
unsigned long int aa = inet_addr(cp);
printf("aa = %x/n",htonl(aa));

二进制(0xE8000100)转 网络地址字符串(232.0.1.0)

unsigned long int kk = 0xE8000100;
struct in_addr abc;
abc.s_addr = htonl(kk);
char* bb = inet_ntoa(abc);
printf("bb = %s/n",bb);

 

 

随机生成一个多播地址 :

struct in_addr Tcp::RadomMulticastAddr() { struct in_addr multiAddr; // Choose a random address in the range [232.0.1.0, 232.255.255.255) // i.e., [0xE8000100, 0xE8FFFFFF) unsigned int const first = 0xE8000100, lastPlus1 = 0xE8FFFFFF; unsigned int const range = lastPlus1 - first; char* ipaddr = (char*)malloc(20); srand((unsigned)(time(0)));//time(0)为rand(),种下种子。如果不设置,则生成的值不变 multiAddr.s_addr = ntohl(first + ((unsigned int)random())%range);//如果不用 ntohl()转换,生成的地址是倒转的。 printf("multiAddr.s_addr %x/n",multiAddr.s_addr); bzero(ipaddr,20); ipaddr = (char*)inet_ntoa(multiAddr); printf("%s/n",ipaddr); free(ipaddr); return multiAddr; }

 

 

 

你可能感兴趣的:(网络编程)