feat: 使用静态arp处理通信

This commit is contained in:
2025-07-18 13:16:07 +08:00
parent e9ad1f0256
commit 9af2d3e87e
6 changed files with 372 additions and 75 deletions

View File

@@ -26,6 +26,8 @@ public class NetConfig
readonly string address;
private IPEndPoint ep;
const string DEFAULT_BOARD_MAC = "12:34:56:78:9a:bc";
/// <summary>
/// Initialize NetConfig client
/// </summary>
@@ -44,6 +46,15 @@ public class NetConfig
this.timeout = timeout;
}
/// <summary>
/// [TODO:description]
/// </summary>
/// <returns>[TODO:return]</returns>
public async ValueTask<bool> Init()
{
return await Arp.CheckOrAddAsync(this.address, DEFAULT_BOARD_MAC);
}
/// <summary>
/// Set host IP address
/// </summary>
@@ -55,11 +66,11 @@ public class NetConfig
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 refrshRet = await Arp.UpdateArpEntryByPingAsync(this.address);
// if (!refrshRet)
// {
// logger.Warn($"Refrash Arp failed, but maybe not a big deal.");
// }
var ipBytes = ip.GetAddressBytes();
@@ -106,11 +117,11 @@ public class NetConfig
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 refrshRet = await Arp.UpdateArpEntryByPingAsync(this.address);
// if (!refrshRet)
// {
// logger.Warn($"Refrash Arp failed, but maybe not a big deal.");
// }
var ipBytes = ip.GetAddressBytes();
@@ -160,13 +171,13 @@ public class NetConfig
// 清除UDP服务器接收缓冲区
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 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);
if (!ret.IsSuccessful)
@@ -214,13 +225,13 @@ public class NetConfig
// 清除UDP服务器接收缓冲区
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 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);
if (!ret.IsSuccessful)
@@ -262,13 +273,13 @@ public class NetConfig
{
// 清除UDP服务器接收缓冲区
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 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);
if (!ret.IsSuccessful)
@@ -296,13 +307,13 @@ public class NetConfig
{
// 清除UDP服务器接收缓冲区
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 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);
if (!ret.IsSuccessful)
@@ -332,11 +343,11 @@ public class NetConfig
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 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);
if (!ret.IsSuccessful)
@@ -364,13 +375,13 @@ public class NetConfig
{
// 清除UDP服务器接收缓冲区
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 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);
if (!ret.IsSuccessful)