社区
Linux_Kernel
帖子详情
如何知道接收到的广播包是从哪个网络端口接收到的?
shuianle
2009-04-14 03:59:07
我的机器上有两块网卡, 当我接收到一个广播包之后, 我怎么知道是从哪个网卡上接收到的?
...全文
554
10
打赏
收藏
如何知道接收到的广播包是从哪个网络端口接收到的?
我的机器上有两块网卡, 当我接收到一个广播包之后, 我怎么知道是从哪个网卡上接收到的?
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
10 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
海枫
2009-05-07
打赏
举报
回复
楼主没有露面了,不知道他(她)写的是那个层面的程序,kernel, user space, etc?
windboy_linux
2009-04-27
打赏
举报
回复
用LINUX下面的Netfilter机制就能很轻松的达到
Cpp权哥
2009-04-24
打赏
举报
回复
你用两个socket分别绑定一个网卡就行了。
Wenxy1
2009-04-24
打赏
举报
回复
sk_buff关联了网卡设备,linyt网友讲对了。
海枫
2009-04-20
打赏
举报
回复
rsfd = socket(PF_INET, SOCK_RAW, IPPROTO_ICMP);
struct sockaddr_in cli_addr;
socklen_t cli_addr_len;
recvfrom(rsfd, buf, buf_len, flags, &cli_addr, &cli_addr_len);
然后查看cli_addr的地址就可以知道它来自哪个网卡了。
shuianle
2009-04-15
打赏
举报
回复
谢谢楼上的回答, 又学到东西了.
不过我这里的应用是广播, 广播的话只能bind到广播地址, 所以根据bind来判断是无法区分的吧?
我实际的应该我找到了别的投机的办法, 用arping.
不过还是很希望能知道此问题的答案
海枫
2009-04-14
打赏
举报
回复
如果是kernel space的代码,通过skb->dev就可以知道是那个设备上提交过来的包了。
user space的代码,如果你的socket是IP层的raw的话,应该要在receive前把网卡bind到socket里,此后只能收此卡和socket函数指定协议的报文了,其它socket类型应该类似!
如果是用tcpdump来抓包的话,请使用-e选项来显示报文的mac地址,又或者只tcpdump一个网卡。
...
FYI
shuianle
2009-04-14
打赏
举报
回复
这里用广播是应为实际的ip可能会 ping 不通的情况.
对端地址应该不能知道本地的地址吧?
抓包工具是可以, 不过我是要自己代码实现,
谢谢你们的回答
猫已经找不回了
2009-04-14
打赏
举报
回复
..用抓包工具,可以显示是那块网卡接收的数据.
morris88
2009-04-14
打赏
举报
回复
貌似从对端地址应该知道从那个网卡来的吧...
Android 四大组件之
广播
Broadcast
你的应用可以使用它对外部事件进行过滤只对感兴趣的外部事件(如当电话呼入时,或者数据
网络
可用时)进行
接收
并做出响应。
广播
接收
器没有用户界面。然而,它们可以启动一个activity或serice 来响应它们收到的信息,...
广播
抑制(整理)
每种
网络
协议都能够创造出大量的
广播
流量;在2层
网络
中,
广播
包
会从除
接收
的
端口
外的所有
端口
转发出去,由于这种转发机制,大量或者过来的
广播
包
会影响
网络
及设备性能;
广播
抑制功能克使用户定义
接收
端口
处理过量的
广播
流量的方法;通过配置
广播
门限,可使
端口
在预定义的周期内,或者当
广播
流量降低至某一特定级别时停止泛洪
广播
流量;
广播
抑制可以阻止过量的
广播
包
从交换机的其他
端口
发出,从而限制了
广播
...
UDP收/发
广播
包
原理及步骤
UDP收/发
广播
包
原理及步骤 如果
网络
中两个主机上的应用程序要相互通信,其一要
知道
彼此的IP,其二要
知道
程序可监听的
端口
。因为同一主机上的程序使用
网络
是通过
端口
号来区分的。 UDP Socket的使用过程: 1. 初始化
网络
库 2. 创建SOCK_DGRAM类型的Socket。 3. 绑定套接字。 4. 发送、
接收
数据。 5. 销毁套接字。
UDP协议发送、
接收
广播
包
.
网络
通信基础 如果
网络
中两个主机上的应用程序要相互通信,其一要
知道
彼此的IP,其二要
知道
程序可监听的
端口
。因为同一主机上的程序使用
网络
是通过
端口
号来区分的。 UDP Socket的使用过程: 1. 初始化
网络
库 2. 创建SOCK_DGRAM类型的Socket。 3. 绑定套接字。 4. 发送、
接收
数据。 5. 销毁套接字。
疑难杂症系列-
网络
UDP
广播
包
发不出去或
接收
不到问题
网络
UDP
广播
包
发不出去或
接收
不到问题发生背景症状代码原因禁用虚拟网卡的操作方式 发生背景 使用电脑作为client端,局域网内发送
广播
。手机作为server端,监听65532
端口
。 症状 单播情况下(指定Server端Ip地址),手机可以监听到数据;
广播
情况下(Ip=255.255.255.255),手机监听不到数据。 代码 public class UDPClient { publi...
Linux_Kernel
4,436
社区成员
17,460
社区内容
发帖
与我相关
我的任务
Linux_Kernel
Linux/Unix社区 内核源代码研究区
复制链接
扫一扫
分享
社区描述
Linux/Unix社区 内核源代码研究区
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章