1 #include <stdio.h>
2 #include <stdlib.h>
3 #include <sys/socket.h>
4 #include <errno.h>
6
7 int main(void)
8 {
9 int sockfd;
10
11 sockfd = socket(AF_NETLINK, SOCK_RAW, 30);
12 if(sockfd < 0)
13 {
14 printf("socket error, %d\n", errno);
15 return -1;
16 }
17 printf("sockfd = %d\n", sockfd);
18
19 return 0;
20 }
第三个参数30是自定义
[root@M:mnt]# ./rawSOCK
socket error, 120
目前的netlink实现已经包含了一个通用的协议类型 NETLINK_GENERIC以方便用户使用
./include/uapi/linux/netlink.h:24:#define NETLINK_GENERIC 16
1 #include <stdio.h>
2 #include <stdlib.h>
3 #include <sys/socket.h>
4 #include <errno.h>
5 #include <linux/netlink.h>
6
7 int main(void)
8 {
9 int sockfd;
10
21 sockfd = socket(AF_NETLINK, SOCK_RAW, NETLINK_GENERIC);
12 if(sockfd < 0)
13 {
14 printf("socket error, %d\n", errno);
15 return -1;
16 }
17 printf("sockfd = %d\n", sockfd);
18
19 return 0;
20 }
[root@M:mnt]# ./rawSOCK
sockfd = 3
本文提供了两个使用Netlink套接字的C语言编程示例,展示了如何创建一个Netlink套接字并指定通用协议类型NETLINK_GENERIC。第一个示例尝试使用自定义协议类型30,但遇到错误;第二个示例成功创建了使用NETLINK_GENERIC类型的套接字。
1336

被折叠的 条评论
为什么被折叠?



