#define APLETHTYPE 0x9527
关于发包时ifindex的获取,组包时的一些大小端处理这些可能需要注意一下,处理时调试时可以更新
服务端:
1,创建socket ,htons(APLETHTYPE)过滤指定协议发送接收。
if ( (sockfd = socket(PF_PACKET, SOCK_RAW, htons(APLETHTYPE) ))== -1 )
{
perror("socket");
return 1;
}
2,设置非阻塞方式(根据实际通信而定)
if (set_nonblocking(sockfd) < 0)
{
printf("setNonBlocking\n");
return ERR_APL;
}
3,在死循环中,对发包和收包进处理
while(1)
{
apl_init_gw_broadcast(sockfd);//发包打包函数
n = recv(sockfd, buf, sizeof(buf), 0);//收包函数
apl_gw_pkt_process(buf);//
}
客户端
1,直接创建socket,然后进行收包,处理回包
if ((sockfd = socket(PF_PACKET,SOCK_RAW,htons(APLETHTYPE)))== -1)
{