当前位置:  技术问答>linux和unix

RAW socket不就收广播包

    来源: 互联网  发布时间:2016-11-16

    本文导语:  本帖最后由 dreamqiang121 于 2011-03-24 09:30:42 编辑 我的需求是这样的,两个系统通信,使用原始socket,第一次时,需要发广播包,来确定对端的mac地址,从而建立起通信。下面是代码片段:其中ETH_P_PRIVATE_TC这个宏是我自...

本帖最后由 dreamqiang121 于 2011-03-24 09:30:42 编辑
我的需求是这样的,两个系统通信,使用原始socket,第一次时,需要发广播包,来确定对端的mac地址,从而建立起通信。下面是代码片段:其中ETH_P_PRIVATE_TC这个宏是我自己定义的一种协议号。

struct sockaddr_ll bindaddr = {0};
socketfd = socket(AF_PACKET, SOCK_RAW, htons(ETH_P_PRIVATE_TC));
if(socketfd == -1)
{
    errmsg("epon_server_init(): create socket failed!(%s)n", strerror(errno));
    return -1;
}
if(0 == (ifindex = get_if_index(socketfd, g_vars.ifname)))
{
    errmsg("epon_server_init(): get_if_index failed n");
    close(socketfd);
    return -1;
}
bindaddr.sll_family = PF_PACKET;
bindaddr.sll_protocol = htons(ETH_P_PRIVATE_TC);
bindaddr.sll_ifindex = ifindex; 
if (-1 == bind(socketfd, (struct sockaddr *)&bindaddr, sizeof(bindaddr)))
{
    errmsg("epon_server_init(): bind failed(%s)n", strerror(errno));
    close(socketfd);
    return -1;
}

可是这样做,就是收不到mac地址是全f的广播包!初学者,望高手解答!

|
Raw socket只能访问到IP层, 你要接收数据链路层的ARP, 必须用packet socket.
程序代码参见: http://blog.csdn.net/wenxy1/archive/2005/08/24/464168.aspx

    
 
 
 
本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。












  • 相关文章推荐
  • java命名空间java.awt.im类inputmethodhighlight的类成员方法: raw_text定义及介绍
  • 跨平台RAW照片处理软件 Raw Therapee
  • java命名空间java.awt.im类inputmethodhighlight的类成员方法: unselected_raw_text_highlight定义及介绍
  • android读取raw文件示例
  • java命名空间java.awt.im类inputmethodhighlight的类成员方法: selected_raw_text_highlight定义及介绍
  • FC5下面安装raw类型的CUPS打印机
  • java命名空间javax.security.sasl类sasl的类成员方法: raw_send_size定义及介绍
  • c++ 将buffer转换成raw string的函数
  • java命名空间javax.xml.crypto.dsig.keyinfo接口x509data的类成员方法: raw_x509_certificate_type定义及介绍
  • Oracle中的Raw类型解释
  • sick_raw在 linux下的具体可以捕获哪种类型的数据包?
  • :) VM+LINUX 怎么加硬盘,怎么建RAW设备
  • sock_raw和sock_packet的问题
  • 套接字中,第二个参数SOCK_RAW 与SOCK_PACKET 有什么区别
  • 关于 __raw_writel()的问题
  • 100分请教高手如何反汇编arm raw文件
  • 开源数据可视化工具 RAW
  • android实现raw文件夹导入数据库代码
  • Python采用raw_input读取输入值的方法
  • Android中asset文件夹与raw文件夹的区别深入解析
  • C++实现raw_input的方法


  • 站内导航:


    特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

    ©2012-2021,,E-mail:www_#163.com(请将#改为@)

    浙ICP备11055608号-3