如何在Linux上获得C C 中的NET封装
How to get net encap in cc++ on linux?
-
使用C C 代码,Linux是否有办法获取有关所有网络适配器"链接封装:*****"的信息?我已经有IP地址和MAC地址之类的东西。
-
这是IfConfig的样本输出:
ethx Link encap:Ethernet HWaddr 00:0F:20:CF:8B:42 inet addr:217.149.127.10 Bcast:217.149.127.63 Mask:255.255.255.192 UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1 RX packets:2472694671 errors:1 dropped:0 overruns:0 frame:0 TX packets:44641779 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:1000 RX bytes:1761467179 (1679.8 Mb) TX bytes:2870928587 (2737.9 Mb) Interrupt:28
请查看<net/if.h>
ifreq
/* Interface request structure used for socket ioctl's. All interface ioctl's must have
parameter definitions which begin with ifr_name. The remainder may be interface specific. */
struct ifreq
{
# define IFHWADDRLEN 6
# define IFNAMSIZ IF_NAMESIZE
union
{
char ifrn_name[IFNAMSIZ]; /* Interface name, e.g. "en0". */
} ifr_ifrn;
union
{
struct sockaddr ifru_addr;
struct sockaddr ifru_dstaddr;
struct sockaddr ifru_broadaddr;
struct sockaddr ifru_netmask;
struct sockaddr ifru_hwaddr;
short int ifru_flags;
int ifru_ivalue;
int ifru_mtu;
struct ifmap ifru_map;
char ifru_slave[IFNAMSIZ]; /* Just fits the size */
char ifru_newname[IFNAMSIZ];
__caddr_t ifru_data;
} ifr_ifru;
};
# define ifr_name ifr_ifrn.ifrn_name /* interface name */
# define ifr_hwaddr ifr_ifru.ifru_hwaddr /* MAC address */
# define ifr_addr ifr_ifru.ifru_addr /* address */
# define ifr_dstaddr ifr_ifru.ifru_dstaddr /* other end of p-p lnk */
# define ifr_broadaddr ifr_ifru.ifru_broadaddr /* broadcast address */
# define ifr_netmask ifr_ifru.ifru_netmask /* interface net mask */
# define ifr_flags ifr_ifru.ifru_flags /* flags */
# define ifr_metric ifr_ifru.ifru_ivalue /* metric */
# define ifr_mtu ifr_ifru.ifru_mtu /* mtu */
# define ifr_map ifr_ifru.ifru_map /* device map */
# define ifr_slave ifr_ifru.ifru_slave /* slave device */
# define ifr_data ifr_ifru.ifru_data /* for use by interface */
# define ifr_ifindex ifr_ifru.ifru_ivalue /* interface index */
# define ifr_bandwidth ifr_ifru.ifru_ivalue /* link bandwidth */
# define ifr_qlen ifr_ifru.ifru_ivalue /* queue length */
# define ifr_newname ifr_ifru.ifru_newname /* New name */
# define _IOT_ifreq _IOT(_IOTS(char),IFNAMSIZ,_IOTS(char),16,0,0)
# define _IOT_ifreq_short _IOT(_IOTS(char),IFNAMSIZ,_IOTS(short),1,0,0)
# define _IOT_ifreq_int _IOT(_IOTS(char),IFNAMSIZ,_IOTS(int),1,0,0)
相关文章:
- 加载与引用 .NET DLL 位于同一文件夹中的引用的 .NET DLL 时"Not found"异常
- VB.NET DLL中的C++DLL函数复制
- TEA在VB.NET中的实现
- 如何使用Winforms C#或C++.Net在不更改文件中其他内容的情况下修改jpg文件中的Orientation e
- Visual Studio 中从 .Net 到 UWP C++的 SerialPort 类等效于什么?
- 列出 C# 中的 non-.NET DLL 函数
- 如何在Linux上获得C C 中的NET封装
- 调用从.NET Core中的C++项目构建的.dll时出现BadImageFormatException
- 使用P/Invoke从MFC DLL函数中读取VB.NET中的结构化数据
- 如何生成类似于 的格式。NET在iostreams中的'0.###%'?
- 如何使用C中的Net SNMP发送V2陷阱
- 获取传递给子模块(C#.NET dll)中的主模块(VC++ exe)的参数
- 从多线程.net应用程序调用的本机dll中的tbb存在问题
- C++ 使用数学语句中的残差<<和剩余>>进行 VB.NET 转换
- 如何在Qt中使用.NET Framework中的系统命名空间
- protobuf-net 中的动态 protobuf 消息
- Visual Basic.NET 中的 C++ 模板等效于什么?
- VS2010 WITHOUT.NET中的Windows窗体应用程序
- C++ VBA 浮点差异中的 .NET COM 组件
- 相当于ASP.Qt 5中的.NET分部视图