说明:通过IP地址和网络掩码来获取广播地址
封装
#include <sys/socket.h>
#include <netinet/in.h>
#include <arpa/inet.h>
#include <stdio.h>
#include <string.h>
int GetBroadcastIP(const char *ip,const char *netmask,char *broadcastIp)
{
struct in_addr ip_inaddr;
struct in_addr netmask_inaddr;
struct in_addr broadcast_inaddr;
unsigned int ip_intaddr;
unsigned int netmask_intaddr;
unsigned int broadcast_intaddr;
char *addr_ptr=0;
if(inet_aton(ip,&ip_inaddr) == 0)
{
return -1;
}
if(inet_aton(netmask,&netmask_inaddr) == 0)
{
return -1;
}
memcpy(&ip_intaddr,&ip_inaddr,sizeof(unsigned int));
memcpy(&netmask_intaddr,&netmask_inaddr,sizeof(unsigned int));
netmask_intaddr = ~netmask_intaddr;
broadcast_intaddr = ip_intaddr | netmask_intaddr;
memcpy(&broadcast_inaddr,&broadcast_intaddr,sizeof(unsigned int));
addr_ptr = inet_ntoa(broadcast_inaddr);
if(addr_ptr==0)
{
return -1;
}
strcpy(broadcastIp,addr_ptr);
return 1;
}
使用
void main()
{
char buff[32];
if(GetBroadcastIP("192.168.1.101","255.255.255.0",buff) < 0)
{
perror("GetBroadcastIP");
return;
}
printf("broadcast ip : %s\n",buff);
}