Linux C/C++客户端如何获得活动网卡的MAC地址?

qpx1125 2013-03-10 12:05:17
对于获取本地MAC的功能,上网搜了一下好像都要指定网卡的名字
strcpy(ifr.ifr_name, szDevName);
ioctl(s, SIOCGIFHWADDR, &ifr);
但是对于TCP客户端来说,它的socket当connect到服务器的时候肯定要通过一个网卡,所以怎么获得它connect用的这个网卡的MAC呢?
...全文
397 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
xengine-qyt 2013-03-12
  • 打赏
  • 举报
回复
直接获取socket 的本身IP地址 在与网卡列表匹配不就行了
zaghost 2013-03-11
  • 打赏
  • 举报
回复
从哪个网卡出去由路由表决定,与socket无关
qq120848369 2013-03-10
  • 打赏
  • 举报
回复
GETCONF可以获取所有网卡,查一下ioctl的相关选项。
qq120848369 2013-03-10
  • 打赏
  • 举报
回复
socket没bind过特定网卡是谈不上出口IP的,完全是根据目标地址查路由表选择网卡出口的。
qpx1125 2013-03-10
  • 打赏
  • 举报
回复
引用 1 楼 qq120848369 的回复:
GETCONF可以获取所有网卡,查一下ioctl的相关选项。
我知道可以一下查出所有的网卡,网上看了一下好像这样就可以:ioctl(fd, SIOCGIFCONF, &ifc) 但我现在想知道的是我这个socket是用的哪个网卡

23,120

社区成员

发帖
与我相关
我的任务
社区描述
Linux/Unix社区 应用程序开发区
社区管理员
  • 应用程序开发区社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧