一般自己做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();
}
可以看到已连接的一共有三张网卡,其中两张是vmware的虚拟网卡,第三张才是正常使用的无线网卡。