fix: 修复获取主机ip错误的问题
This commit is contained in:
parent
12cd35edff
commit
e9ad1f0256
|
@ -153,7 +153,7 @@ public class NetConfigController : ControllerBase
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
var netConfig = new NetConfig(BOARD_IP, BOARD_PORT, 0);
|
var netConfig = new NetConfig(BOARD_IP, BOARD_PORT, 0);
|
||||||
|
|
||||||
var hostIPResult = await netConfig.GetHostIP();
|
var hostIPResult = await netConfig.GetHostIP();
|
||||||
var boardIPResult = await netConfig.GetBoardIP();
|
var boardIPResult = await netConfig.GetBoardIP();
|
||||||
var hostMACResult = await netConfig.GetHostMAC();
|
var hostMACResult = await netConfig.GetHostMAC();
|
||||||
|
@ -345,7 +345,8 @@ public class NetConfigController : ControllerBase
|
||||||
{
|
{
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
// 获取本机第一个有效的IPv4地址
|
// 获取所有本机IPv4地址,并选择与实验板IP前三段相同的IP
|
||||||
|
var boardIpSegments = BOARD_IP.Split('.').Take(3).ToArray();
|
||||||
var ip = System.Net.NetworkInformation.NetworkInterface
|
var ip = System.Net.NetworkInformation.NetworkInterface
|
||||||
.GetAllNetworkInterfaces()
|
.GetAllNetworkInterfaces()
|
||||||
.Where(nic => nic.OperationalStatus == System.Net.NetworkInformation.OperationalStatus.Up
|
.Where(nic => nic.OperationalStatus == System.Net.NetworkInformation.OperationalStatus.Up
|
||||||
|
@ -353,7 +354,14 @@ public class NetConfigController : ControllerBase
|
||||||
.SelectMany(nic => nic.GetIPProperties().UnicastAddresses)
|
.SelectMany(nic => nic.GetIPProperties().UnicastAddresses)
|
||||||
.Where(addr => addr.Address.AddressFamily == System.Net.Sockets.AddressFamily.InterNetwork)
|
.Where(addr => addr.Address.AddressFamily == System.Net.Sockets.AddressFamily.InterNetwork)
|
||||||
.Select(addr => addr.Address)
|
.Select(addr => addr.Address)
|
||||||
.FirstOrDefault();
|
.FirstOrDefault(addr =>
|
||||||
|
{
|
||||||
|
var segments = addr.ToString().Split('.');
|
||||||
|
return segments.Length == 4 &&
|
||||||
|
segments[0] == boardIpSegments[0] &&
|
||||||
|
segments[1] == boardIpSegments[1] &&
|
||||||
|
segments[2] == boardIpSegments[2];
|
||||||
|
});
|
||||||
|
|
||||||
if (ip == null)
|
if (ip == null)
|
||||||
return StatusCode(StatusCodes.Status500InternalServerError, "无法获取本机IP地址");
|
return StatusCode(StatusCodes.Status500InternalServerError, "无法获取本机IP地址");
|
||||||
|
|
|
@ -54,6 +54,13 @@ public class NetConfig
|
||||||
// 清除UDP服务器接收缓冲区
|
// 清除UDP服务器接收缓冲区
|
||||||
MsgBus.UDPServer.ClearUDPData(this.address, this.taskID);
|
MsgBus.UDPServer.ClearUDPData(this.address, this.taskID);
|
||||||
|
|
||||||
|
// 刷新ARP
|
||||||
|
var refrshRet = await Arp.UpdateArpEntryByPingAsync(this.address);
|
||||||
|
if (!refrshRet)
|
||||||
|
{
|
||||||
|
logger.Warn($"Refrash Arp failed, but maybe not a big deal.");
|
||||||
|
}
|
||||||
|
|
||||||
var ipBytes = ip.GetAddressBytes();
|
var ipBytes = ip.GetAddressBytes();
|
||||||
|
|
||||||
var ret = await UDPClientPool.WriteAddrSeq(this.ep, this.taskID, NetConfigAddr.HOST_IP, ipBytes, this.timeout);
|
var ret = await UDPClientPool.WriteAddrSeq(this.ep, this.taskID, NetConfigAddr.HOST_IP, ipBytes, this.timeout);
|
||||||
|
@ -98,6 +105,13 @@ public class NetConfig
|
||||||
// 清除UDP服务器接收缓冲区
|
// 清除UDP服务器接收缓冲区
|
||||||
MsgBus.UDPServer.ClearUDPData(this.address, this.taskID);
|
MsgBus.UDPServer.ClearUDPData(this.address, this.taskID);
|
||||||
|
|
||||||
|
// 刷新ARP
|
||||||
|
var refrshRet = await Arp.UpdateArpEntryByPingAsync(this.address);
|
||||||
|
if (!refrshRet)
|
||||||
|
{
|
||||||
|
logger.Warn($"Refrash Arp failed, but maybe not a big deal.");
|
||||||
|
}
|
||||||
|
|
||||||
var ipBytes = ip.GetAddressBytes();
|
var ipBytes = ip.GetAddressBytes();
|
||||||
|
|
||||||
var ret = await UDPClientPool.WriteAddrSeq(this.ep, this.taskID, NetConfigAddr.BOARD_IP, ipBytes, this.timeout);
|
var ret = await UDPClientPool.WriteAddrSeq(this.ep, this.taskID, NetConfigAddr.BOARD_IP, ipBytes, this.timeout);
|
||||||
|
@ -146,6 +160,13 @@ public class NetConfig
|
||||||
|
|
||||||
// 清除UDP服务器接收缓冲区
|
// 清除UDP服务器接收缓冲区
|
||||||
MsgBus.UDPServer.ClearUDPData(this.address, this.taskID);
|
MsgBus.UDPServer.ClearUDPData(this.address, this.taskID);
|
||||||
|
|
||||||
|
// 刷新ARP
|
||||||
|
var refrshRet = await Arp.UpdateArpEntryByPingAsync(this.address);
|
||||||
|
if (!refrshRet)
|
||||||
|
{
|
||||||
|
logger.Warn($"Refrash Arp failed, but maybe not a big deal.");
|
||||||
|
}
|
||||||
|
|
||||||
var ret = await UDPClientPool.WriteAddrSeq(this.ep, this.taskID, NetConfigAddr.HOST_MAC, macAddress, this.timeout);
|
var ret = await UDPClientPool.WriteAddrSeq(this.ep, this.taskID, NetConfigAddr.HOST_MAC, macAddress, this.timeout);
|
||||||
if (!ret.IsSuccessful)
|
if (!ret.IsSuccessful)
|
||||||
|
@ -193,6 +214,13 @@ public class NetConfig
|
||||||
|
|
||||||
// 清除UDP服务器接收缓冲区
|
// 清除UDP服务器接收缓冲区
|
||||||
MsgBus.UDPServer.ClearUDPData(this.address, this.taskID);
|
MsgBus.UDPServer.ClearUDPData(this.address, this.taskID);
|
||||||
|
|
||||||
|
// 刷新ARP
|
||||||
|
var refrshRet = await Arp.UpdateArpEntryByPingAsync(this.address);
|
||||||
|
if (!refrshRet)
|
||||||
|
{
|
||||||
|
logger.Warn($"Refrash Arp failed, but maybe not a big deal.");
|
||||||
|
}
|
||||||
|
|
||||||
var ret = await UDPClientPool.WriteAddrSeq(this.ep, this.taskID, NetConfigAddr.BOARD_MAC, macAddress, this.timeout);
|
var ret = await UDPClientPool.WriteAddrSeq(this.ep, this.taskID, NetConfigAddr.BOARD_MAC, macAddress, this.timeout);
|
||||||
if (!ret.IsSuccessful)
|
if (!ret.IsSuccessful)
|
||||||
|
@ -234,6 +262,13 @@ public class NetConfig
|
||||||
{
|
{
|
||||||
// 清除UDP服务器接收缓冲区
|
// 清除UDP服务器接收缓冲区
|
||||||
MsgBus.UDPServer.ClearUDPData(this.address, this.taskID);
|
MsgBus.UDPServer.ClearUDPData(this.address, this.taskID);
|
||||||
|
|
||||||
|
// 刷新ARP
|
||||||
|
var refrshRet = await Arp.UpdateArpEntryByPingAsync(this.address);
|
||||||
|
if (!refrshRet)
|
||||||
|
{
|
||||||
|
logger.Warn($"Refrash Arp failed, but maybe not a big deal.");
|
||||||
|
}
|
||||||
|
|
||||||
var ret = await UDPClientPool.ReadAddrSeq(this.ep, this.taskID, NetConfigAddr.HOST_IP, this.timeout);
|
var ret = await UDPClientPool.ReadAddrSeq(this.ep, this.taskID, NetConfigAddr.HOST_IP, this.timeout);
|
||||||
if (!ret.IsSuccessful)
|
if (!ret.IsSuccessful)
|
||||||
|
@ -261,6 +296,13 @@ public class NetConfig
|
||||||
{
|
{
|
||||||
// 清除UDP服务器接收缓冲区
|
// 清除UDP服务器接收缓冲区
|
||||||
MsgBus.UDPServer.ClearUDPData(this.address, this.taskID);
|
MsgBus.UDPServer.ClearUDPData(this.address, this.taskID);
|
||||||
|
|
||||||
|
// 刷新ARP
|
||||||
|
var refrshRet = await Arp.UpdateArpEntryByPingAsync(this.address);
|
||||||
|
if (!refrshRet)
|
||||||
|
{
|
||||||
|
logger.Warn($"Refrash Arp failed, but maybe not a big deal.");
|
||||||
|
}
|
||||||
|
|
||||||
var ret = await UDPClientPool.ReadAddrSeq(this.ep, this.taskID, NetConfigAddr.BOARD_IP, this.timeout);
|
var ret = await UDPClientPool.ReadAddrSeq(this.ep, this.taskID, NetConfigAddr.BOARD_IP, this.timeout);
|
||||||
if (!ret.IsSuccessful)
|
if (!ret.IsSuccessful)
|
||||||
|
@ -289,6 +331,13 @@ public class NetConfig
|
||||||
// 清除UDP服务器接收缓冲区
|
// 清除UDP服务器接收缓冲区
|
||||||
MsgBus.UDPServer.ClearUDPData(this.address, this.taskID);
|
MsgBus.UDPServer.ClearUDPData(this.address, this.taskID);
|
||||||
|
|
||||||
|
// 刷新ARP
|
||||||
|
var refrshRet = await Arp.UpdateArpEntryByPingAsync(this.address);
|
||||||
|
if (!refrshRet)
|
||||||
|
{
|
||||||
|
logger.Warn($"Refrash Arp failed, but maybe not a big deal.");
|
||||||
|
}
|
||||||
|
|
||||||
var ret = await UDPClientPool.ReadAddrSeq(this.ep, this.taskID, NetConfigAddr.HOST_MAC, this.timeout);
|
var ret = await UDPClientPool.ReadAddrSeq(this.ep, this.taskID, NetConfigAddr.HOST_MAC, this.timeout);
|
||||||
if (!ret.IsSuccessful)
|
if (!ret.IsSuccessful)
|
||||||
{
|
{
|
||||||
|
@ -315,6 +364,13 @@ public class NetConfig
|
||||||
{
|
{
|
||||||
// 清除UDP服务器接收缓冲区
|
// 清除UDP服务器接收缓冲区
|
||||||
MsgBus.UDPServer.ClearUDPData(this.address, this.taskID);
|
MsgBus.UDPServer.ClearUDPData(this.address, this.taskID);
|
||||||
|
|
||||||
|
// 刷新ARP
|
||||||
|
var refrshRet = await Arp.UpdateArpEntryByPingAsync(this.address);
|
||||||
|
if (!refrshRet)
|
||||||
|
{
|
||||||
|
logger.Warn($"Refrash Arp failed, but maybe not a big deal.");
|
||||||
|
}
|
||||||
|
|
||||||
var ret = await UDPClientPool.ReadAddrSeq(this.ep, this.taskID, NetConfigAddr.BOARD_MAC, this.timeout);
|
var ret = await UDPClientPool.ReadAddrSeq(this.ep, this.taskID, NetConfigAddr.BOARD_MAC, this.timeout);
|
||||||
if (!ret.IsSuccessful)
|
if (!ret.IsSuccessful)
|
||||||
|
|
Loading…
Reference in New Issue