获取多个网卡的IP以及外网地址C++VC

获取多个网卡的IP以及外网地址C++VC,第1张

这是个难题,按说正常的方法你只能获得本地两个ip 网关的两个ip 和一个外网的ip 因为只有一个默认的网关ip,你获取的ip是通过这个网关获取的。想获取另外网关的ip,需要再将默认路由设到另外一个网关ip 这两个动作就决定你获取的时候必须有一次换路由route add gw xxxxxxxxxx 2552552550

要么你就通过两个路由器的>

方法一:

1、对着桌面的“网络”,右键--属性

2、点击“更改适配器设置”

3、找到你连接的网络,右键--状态

4、点击“详细信息”

5、里面的物理地址就是你的网卡地址END

方法二:

点击开始菜单,输入cmd,回车

在命令行中输入ipconfig/all

回车

方法三:

找到你的网络连接,物理地址就是你的网卡地址

在应用层上不好截获,通过写协议驱动,可以截获通过你电脑上所有的网卡的数据包,在下个WDK,里面有一个现成的例子Ndisprot,可以参照修改成适合自己的驱动,然后通过应用层来调用下层的这个协议驱动,回到应用层后再对这个包进行解析。

代码如下:

using System;

using SystemDrawing;

using SystemWindowsForms;

using SystemManagement;  //必须在项目中添加SystemManagement引用!

using SystemCollectionsGeneric;

namespace WindowsFormsApplication1

{

    public partial class Form1 : Form

    {

        public Form1()

        {

            InitializeComponent();

            

            comboBox1DropDownStyle = ComboBoxStyleDropDownList;

            comboBox1ItemsAddRange(GetNetcardName()ToArray());

       }

        // 获取计算机上安装的网卡名称

        private List<string> GetNetcardName()

        {

            List<string> cardNames = new List<string>();

            

            ManagementClass mc = 

                new ManagementClass("Win32_NetworkAdapter");

            ManagementObjectCollection moc = mcGetInstances();

            

            foreach (ManagementObject mo in moc)

            {

                 cardNamesAdd(mo["Description"]ToString());

            }

            return cardNames;

        }

    }

}

以上就是关于获取多个网卡的IP以及外网地址C++/VC全部的内容,包括:获取多个网卡的IP以及外网地址C++/VC、如何获取网卡相关信息、VC如何截获指定网卡封包等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/web/9783750.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-05-01
下一篇2023-05-01

发表评论

登录后才能评论

评论列表(0条)

    保存