做OptiTrack局域网数据通信时,需要设置本地IP和动捕数据服务器IP,来实现获取动捕数据。由于局域网搭建时需要手动设置电脑IP,因此想到如果可以获取本机IP,服务器IP通常设置固定后不会更改,如此在同一局域网内的电脑上,作为客户端的程序就无需因本地IP不同而做独立发布。
测试过两种获取本地IP的方法,区别如下:
1、获取所有网络端口IP地址,需自行筛选,若电脑只有一个网络端口则可直接获取使用。
foreach (NetworkInterface item in NetworkInterface.GetAllNetworkInterfaces())
{
NetworkInterfaceType _type1 = NetworkInterfaceType.Wireless80211;
NetworkInterfaceType _type2 = NetworkInterfaceType.Ethernet;
if ((item.NetworkInterfaceType == _type1 || item.NetworkInterfaceType == _type2) && item.OperationalStatus == OperationalStatus.Up)
{
foreach (UnicastIPAddressInformation ip in item.GetIPProperties().UnicastAddresses)
{
if (ip.Address.AddressFamily == System.Net.Sockets.AddressFamily.InterNetwork)
{
LocalAddress = ip.Address.ToString();
}
}
}
}
2、获取网络IP地址,这个方法局域网内不可用,手动设置的IP地址在这种方式中获取的结果为0.0.0.0,但自动分配IP的环境下可获取到IP地址,且通过命令提示符中查看IP,获取结果与查看结果一致。
LocalAddress = Network.player.ipAddress;
Debug.Log("LocalAddress:" + LocalAddress);