C# 选择特定的网卡

一般自己做tcp通信项目时,最简单的都是局域网通信。
有时候一台电脑有多张网卡,分别接入不同的局域网(如局域网1是做内部监控的,局域网2是在线获取数据的),那么本机上运行的监控程序就应该指定局域网卡1。

using System.Net.NetworkInformation;  

cNetWorkInfo是自己定义的一个class,用于存储网卡信息及其对应的IP地址。

public static cNetWorkInfo[] GetNetWorkInfo()
        {
            List<cNetWorkInfo> netWorkList = new List<cNetWorkInfo>();
            NetworkInterface[] NetworkInterfaces = NetworkInterface.GetAllNetworkInterfaces();  //获取所有的网络接口
            foreach (NetworkInterface NetworkIntf in NetworkInterfaces)                         //针对每张网卡
            {
                IPInterfaceProperties IPInterfaceProperties = NetworkIntf.GetIPProperties();    //获取描述此网络接口的配置的对象
                UnicastIPAddressInformationCollection UnicastIPAddressInformationCollection = IPInterfaceProperties.UnicastAddresses;//获取分配给此接口的单播地址
                foreach (UnicastIPAddressInformation UnicastIPAddressInformation in UnicastIPAddressInformationCollection) //针对每个IP
                {
                    if (UnicastIPAddressInformation.Address.AddressFamily == AddressFamily.InterNetwork)//IPv4
                    {
                        string IP = UnicastIPAddressInformation.Address.ToString();
                        if (IP != "127.0.0.1")//不是本地IP
                        {
                            if (NetworkIntf.OperationalStatus == OperationalStatus.Up)//网卡已连接
                            {
                                cNetWorkInfo info = new cNetWorkInfo();
                                info.mIp = IP;
                                info.mDiscription = NetworkIntf.Description;
                                netWorkList.Add(info);
                            }
                        }
                    }
                }
            }
            return netWorkList.ToArray();
        }

C# 选择特定的网卡_第1张图片
可以看到已连接的一共有三张网卡,其中两张是vmware的虚拟网卡,第三张才是正常使用的无线网卡。

你可能感兴趣的:(C#)