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

请问为什么我的socket能接收到两块网卡的数据??急

    来源: 互联网  发布时间:2015-10-08

    本文导语:  我的套接字为sock_fd = socket( PF_PACKET, SOCK_PACKET, htons(ETH_P_ALL) ); 并且按下面的方法bind在一个网卡上 iface_bind( int fd, int ifindex, char *ebuf ) { struct sockaddr_ll sll; memset( &sll, 0, sizeof(sll) ); sll.sll_family = AF_PACKET; s...

我的套接字为sock_fd = socket( PF_PACKET, SOCK_PACKET, htons(ETH_P_ALL) );
并且按下面的方法bind在一个网卡上
iface_bind( int fd, int ifindex, char *ebuf )
{
struct sockaddr_ll sll;

memset( &sll, 0, sizeof(sll) );
sll.sll_family = AF_PACKET;
sll.sll_ifindex = ifindex;      -----请问这个值怎么设置?如果我想bind 在eth1上,这个ifindex是不是应该设置为1?
sll.sll_protocol = htons(ETH_P_ALL);

if( bind(fd, (struct sockaddr *) &sll, sizeof(sll)) == -1 ) {
sprintf( ebuf, "bind: %s", pcap_strerror(errno) );
return -1;
}

return 0;
}

但是很奇怪的是,用上面创建的套接字接收,居然能够同时收到我两块网卡的数据!感觉bind没有起作用啊,这是怎么回事?

我只想用这种套接字接收其中一块网卡的数据,请问各位高人怎么设置?

|
int if_get_id(int sock_fd, const char *device)//e.g. "eth0", "eth1"
{
struct ifreq ifr;

memset(&ifr, 0, sizeof(ifr));
strncpy(ifr.ifr_name, device, sizeof(ifr.ifr_name));

if (ioctl(sock_fd, SIOCGIFINDEX, &ifr) == -1) 
{
perror("ioctl failed");
return -1;
}

return ifr.ifr_ifindex;
}

    
 
 

您可能感兴趣的文章:

  • 我在安装netware 操作系统时, 在选择网卡型号时, 找不到我的网卡的型号, 请问怎样办?
  • Red hat 9.0 无法识别USB移动硬盘, 无法识别网卡和无线网卡,请问如何安装驱动?
  • 请问 如何在 solaris 下装 网卡驱动(网卡不能被识别)
  • 我的网卡在redhat7.3下不能自动驱动,但我有for linux的驱动程序,请问如何才能驱动我的网卡,我是菜菜,请详细说明,谢谢!
  • 请问,在SCOUNIX下,如何更改网卡的MAC地址?
  • 我在linux中把 网卡删除了,请问如何将他安装?
  • 要写一个无线网卡的驱动,请问怎么下手?
  • 请问是不是有的网卡linux不认???
  • 请问在red hat linux7.3怎么装网卡
  • 请问在文本终端下,怎么用shell命令使网卡发送数据?
  • 请问如何在内核中得到无线网卡IP?
  • 请问:我如何指定网卡进行监听?
  • 请问如何在以安装好的linux下装网卡?
  • 请问如何为一块网卡设置多ip?
  • 问题:网卡始终是Inactive(没有激活)状态,也上不了网,请问?
  • 请问网卡为什么不能激活
  • 请问怎么设置网卡的混杂模式
  • 请问Fedora Core 5是否支持无线网卡?
  • 请问在DOS下联网时,如何才能改网卡的I/O地址
  • 请问如何在REDHAT 9下安装3c509b网卡驱动
  • 请问如何清除UDP接收缓存?????????????
  • 请问在linux上tcp能够接收的最大连接数是多少?
  • 请问linux下socket编程服务器数据只能发送不能接收吗?
  • 请问:signal(), sigaction()函数会不会使自已所有的进程挂起啊,(这样就等接收各种信号,进行一些处理工作啊)
  • 一个可以接收键盘事件的application修改成applet用IE查看时就无法接收键盘事件,请问应该如何处理?
  •  
    本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
    本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。












  • 相关文章推荐
  • 请问Linux数据库编程是否也可以支持通用的SQL语言进行数据库编写.
  • 急,请问数据流是经过zip压缩的,Linux下如何编程,解开压缩的数据流?
  • 请问那里有SYBASE的jbdb 2.0下载;jspsmartupload可以直接将文件上传到数据库,请问如何使用
  • 请问,如果连接一个Mssql的数据库。并操作里面的数据。谢谢了:)
  • 请问谁有Applet连接远程Access数据库并且显示数据库内容的例子!
  • 请教:请问java中存放数据库中的记录,用什么数据结构?(hashtable?vector?还是别的?)
  • 请问:ORACLE中的数据取出来后,需不需要进行一定的转换才能变为C语言的数据类型啊?
  • 请问如何查询数据库(注意:不是数据表)?
  • 散分:Jbuilder6开发数据库应用请问你们都用什么数据库? 免费的数据库有那些?
  • 请问在java钟如何得到数据库中的记录总数,以及如何求数据库中一个字段的和?
  • 现在我要画一个数据流程图,请问怎么画?我没有数据流程图的符号。
  • 请问各位朋友:在JAVA的数据库应用管理系统中,如何不在操作系统忠建立数据源便能连接数据库(如ACCESS、MS SQL 等等
  • 请问什么叫做“数据字典”???
  • 请问,如何在作数据备份的时候,对打包的数据文件自动加密?然后这个密码又如何加密呢?
  • 请问:在GCC里的C程序里的变量的声明是不是只能在前面,而且相同类型的变量的声明只能放在一起?如果不是,请问怎么样可以解决这个问题. iis7站长之家
  • 请问有什么方法直接从网卡取数据??
  • 请问网络连接断开,如何让数据在联网后连续发送?
  • 初学JAVA,请问各位哪本数据结构(JAVA版)比较好?
  • 请问怎样把数据发送到网页?
  • 请问如何设计tcp数据包啊??
  • 请问:我知道路由器的telnet密码,但忘记了enable 密码,请问如何是好?
  • 请问最新的reahat9.0是基于什么核心的?2.4?2.6?请问那里能下载?
  • 请问:请问哪里有关于linux基本操作命令讲解的资料下载,最好是幻灯片格式的.
  • 请问,我试图用#admintool&图形工具命令来安装sun workshop5.0,为什么进入的却是用户管理界面?请问具体该如何在solaris下安装应用软件
  • 请问在Redhat 9里,我从登录就是图形介面,请问如何在图形介面内进入命令行方式呢,谢谢
  • 请问玩过SOLARIS的高手门,在不正常关机后,就不能启动到windows公用桌面了,只能在命令提示模式下了,请问怎么解决这个问题啊?急~!~!
  • 请问:我在redhat下装了bochs-2.2.1-1.rpm,.装了后,想设置一下,但找不到bochsrc.fda.bxrc,请问这个文件在哪个曰录下啊。
  • 请问:在配置Qt时,很多文档都说在.profile,.login里加东西,但是我好像没有发现有这两个文件上,请问这些文件在哪个目录下啊
  • 请问:在GCC里的C程序里的变量的声明是不是只能在前面,而且相同类型的变量的声明只能放在一起?如果不是,请问怎么样可以解决这个问题.
  • 请问各位大虾,小弟今天开始学jsp了,这学期我们有java课,所以已经下载了jdk(好象是1.2),请问我的98环境怎么配置jsp环境呀?我的jdk可以运行.java程序,别的我就不知道了....谢谢!
  • 主机是WIN2000,我用的是LUNIX,请问是否可以共享上网? 如果可以请问如何设置? 500分答谢,龟儿食言!


  • 站内导航:


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

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

    浙ICP备11055608号-3