- 论坛徽章:
- 0
|
为什么bind()函数值返回值为-1.源代码如下:
int main(int argc,char *argv[])
{
int fd ;
int fp ;
int len=length ;
char buf[length]={0};
struct sockaddr_nl addr;
struct nlmsghdr *nh;
struct ifinfomsg *ifinfo ;
struct rtattr *attr;
fd=socket(AF_NETLINK,SOCK_RAW,NETLINK_ROUTE);
if(fd<0)
{
printf("can not open NETLINK_ROUTE\n");
exit(1);
}
setsockopt(fd, SOL_SOCKET, SO_RCVBUF, &len, sizeof(len));
memset(&addr,0,sizeof(addr));
addr.nl_family=AF_NETLINK;
addr.nl_groups=RTNLGRP_LINK;
if( bind(fd,(struct sockaddr*)&addr,sizeof(struct sockaddr_nl))==-1);// 函数 bind() 用于把一个打开的 netlink socket 与 netlink 源 socket 地址绑定在一起。
{
printf("can not bind\n");
return;
}
}
运行后结果显示为can not bind
哪位大神会的,感激不尽。
|
|