通过IP获得ACE_SOCK_Dgram_Mcast需要的net_if网络设备名
2008-06-20 16:08
471 查看
在用到ACE_SOCK_Dgram_Mcast时如果要绑定网卡设备,而需要在join时提供设备名称,而我的程序设计是设置IP的,所以需要通过IP得到设备名。后来多方查询资料,做了如下函数:
需要注意的是,这个函数只支持第一个匹配的设备名的……
string get_bind_nic(string ipaddr) { ACE_SOCK_Dgram so(ACE_INET_Addr((u_short)0)); ifreq if_buf[16]; ifconf ifc; int nic_count; ifc.ifc_len = sizeof(if_buf); ifc.ifc_buf = (caddr_t)if_buf; if(ACE_OS::ioctl(so.get_handle(), SIOCGIFCONF, (char*)&ifc) == 0) { nic_count = ifc.ifc_len / sizeof(struct ifreq); while(nic_count-- > 0) { if(ACE_OS::ioctl(so.get_handle(), SIOCGIFADDR, (char*)&if_buf[nic_count]) == 0) { if(ipaddr == ACE_OS::inet_ntoa(((struct sockaddr_in*)(&if_buf[nic_count].ifr_addr))->sin_addr)) return if_buf[nic_count].ifr_name; } } } return ""; }
需要注意的是,这个函数只支持第一个匹配的设备名的……
相关文章推荐
- 通过Ip在局域网内获得指定网络设备的MAC地址
- DTU(用于将串口数据转换为IP数据或将IP数据转换为串口数据通过无线通信网络进行传送的无线终端设备)
- python 使用socket通过用户自定义输入获得远程设备IP
- 通过请求接口的办法获得本设备IP以及IP地址
- windows phone 7获得当前使用网络类型(设备是否通过zune与PC相连)
- 【转发】 通过openwrt的NAT6转发,使后端设备获得ipv6网络
- 使用PF_PACKET和SOCK_DGRAM探测网络包
- adb通过TCP/IP来调试Android设备,adb直接往editTest文本框里写文本
- linux学习入门15——网络原理(linuxcast.net)(网络编址,IP,ARP,DNS,域名)
- 通过lwjgl获得显示设备当前分辨率、可支持分辨率列表
- 如何通过腾讯SOSO问问获得巨大IP流量?
- Qt简单网络运用获得本机IP
- 通过WMI获得硬盘和CPU的物理序列号(VB.net)
- 教你50招提升ASP.NET性能(十):减少通过网络发送的数据
- Centos7 网络配置 开启(动态IP&静态IP) 查IP 安装 net-tools 升级 yum
- ASP.net 获得客户端的IP相关知识
- ACE网络编程笔记(2):IPC SAP、ACE_SOCKET和TCP/IP通信实例
- adb通过TCP/IP来调试Android设备
- 如何将一个网络分为两个子网、如何通过已知IP和子网掩码计算其同一网段的主机IP
- 网络配置的四大基本要素: IP + Netmask + Gateway + DNS