易网时代-编程资源站
Welcome
微信登录
编程资源
图片资源库
蚂蚁家优选
PDF转换器
软件资源
软件开发
、
小程序制作
、
系统集成与运维
、
空间租用
、
硬件开发
、
视频监控
、
技术咨询与支持
——联系电话:0311-88999002/88999003
首页
/
操作系统
/
Linux
/
在Linux下获取修改子网掩码NETMASK的两个函数
//获取子网掩码的函数
QString GetLocalNetMask()
{
int
sock_netmask;
char
netmask_addr[50];
struct
ifreq ifr_mask;
struct
sockaddr_in *net_mask;
sock_netmask = socket( AF_INET, SOCK_STREAM, 0 );
if
( sock_netmask == -1)
{
perror(
"create socket failture...GetLocalNetMask "
);
return
""
;
}
memset(&ifr_mask, 0,
sizeof
(ifr_mask));
strncpy(ifr_mask.ifr_name, ifname,
sizeof
(ifr_mask.ifr_name )-1);
if
( (ioctl( sock_netmask, SIOCGIFNETMASK, &ifr_mask ) ) < 0 )
{
printf(
"mac ioctl error "
);
return
""
;
}
net_mask = (
struct
sockaddr_in * )&( ifr_mask.ifr_netmask );
strcpy( netmask_addr, inet_ntoa( net_mask -> sin_addr ) );
printf(
"local netmask:%s "
,netmask_addr);
close( sock_netmask );
return
QString( netmask_addr );
}
//修改子NETMASK的函数
QString SetLocalNetMask(
const
char
*szNetMask)
{
int
sock_netmask;
char
netmask_addr[32];
struct
ifreq ifr_mask;
struct
sockaddr_in *sin_net_mask;
sock_netmask = socket( AF_INET, SOCK_STREAM, 0 );
if
( sock_netmask == -1)
{
perror(
"Not create network socket connect "
);
return
""
;
}
memset(&ifr_mask, 0,
sizeof
(ifr_mask));
strncpy(ifr_mask.ifr_name,
"eth0"
,
sizeof
(ifr_mask.ifr_name )-1);
sin_net_mask = (
struct
sockaddr_in *)&ifr_mask.ifr_addr;
sin_net_mask -> sin_family = AF_INET;
inet_pton(AF_INET, szNetMask, &sin_net_mask ->sin_addr);
if
(ioctl(sock_netmask, SIOCSIFNETMASK, &ifr_mask ) < 0)
{
printf(
"sock_netmask ioctl error "
);
return
""
;
}
}
收藏该网址
版权所有©石家庄振强科技有限公司2024
冀ICP备08103738号-5
网站地图