network errors

This commit is contained in:
JohnCorby 2025-02-25 19:32:08 -08:00
parent 1acebc44cd
commit 8ba823cb79
2 changed files with 69 additions and 99 deletions

View File

@ -71,7 +71,7 @@ public static class Util
if (transport.DoFakeNetworkErrors)
{
var floatHandle = GCHandle.Alloc((float)50, GCHandleType.Pinned);
var intHandle = GCHandle.Alloc((int)500, GCHandleType.Pinned);
var intHandle = GCHandle.Alloc((int)100, GCHandleType.Pinned);
// global scope = dont apply to connection
SteamNetworkingUtils.SetConfigValue(
@ -88,101 +88,66 @@ public static class Util
ESteamNetworkingConfigDataType.k_ESteamNetworkingConfig_Float,
floatHandle.AddrOfPinnedObject()
);
/*
result.Add(new SteamNetworkingConfigValue_t
{
m_eValue = ESteamNetworkingConfigValue.k_ESteamNetworkingConfig_FakePacketLoss_Send,
m_eDataType = ESteamNetworkingConfigDataType.k_ESteamNetworkingConfig_Float,
m_val = new SteamNetworkingConfigValue_t.OptionValue
{
m_float = 50
}
});
result.Add(new SteamNetworkingConfigValue_t
{
m_eValue = ESteamNetworkingConfigValue.k_ESteamNetworkingConfig_FakePacketLoss_Recv,
m_eDataType = ESteamNetworkingConfigDataType.k_ESteamNetworkingConfig_Float,
m_val = new SteamNetworkingConfigValue_t.OptionValue
{
m_float = 50
}
});
result.Add(new SteamNetworkingConfigValue_t
{
m_eValue = ESteamNetworkingConfigValue.k_ESteamNetworkingConfig_FakePacketLag_Send,
m_eDataType = ESteamNetworkingConfigDataType.k_ESteamNetworkingConfig_Int32,
m_val = new SteamNetworkingConfigValue_t.OptionValue
{
m_int32 = 500
}
});
result.Add(new SteamNetworkingConfigValue_t
{
m_eValue = ESteamNetworkingConfigValue.k_ESteamNetworkingConfig_FakePacketLag_Recv,
m_eDataType = ESteamNetworkingConfigDataType.k_ESteamNetworkingConfig_Int32,
m_val = new SteamNetworkingConfigValue_t.OptionValue
{
m_int32 = 500
}
});
SteamNetworkingUtils.SetConfigValue(
ESteamNetworkingConfigValue.k_ESteamNetworkingConfig_FakePacketLag_Send,
ESteamNetworkingConfigScope.k_ESteamNetworkingConfig_Global,
IntPtr.Zero,
ESteamNetworkingConfigDataType.k_ESteamNetworkingConfig_Int32,
intHandle.AddrOfPinnedObject()
);
SteamNetworkingUtils.SetConfigValue(
ESteamNetworkingConfigValue.k_ESteamNetworkingConfig_FakePacketLag_Recv,
ESteamNetworkingConfigScope.k_ESteamNetworkingConfig_Global,
IntPtr.Zero,
ESteamNetworkingConfigDataType.k_ESteamNetworkingConfig_Int32,
intHandle.AddrOfPinnedObject()
);
result.Add(new SteamNetworkingConfigValue_t
{
m_eValue = ESteamNetworkingConfigValue.k_ESteamNetworkingConfig_FakePacketReorder_Send,
m_eDataType = ESteamNetworkingConfigDataType.k_ESteamNetworkingConfig_Float,
m_val = new SteamNetworkingConfigValue_t.OptionValue
{
m_float = 50
}
});
result.Add(new SteamNetworkingConfigValue_t
{
m_eValue = ESteamNetworkingConfigValue.k_ESteamNetworkingConfig_FakePacketReorder_Recv,
m_eDataType = ESteamNetworkingConfigDataType.k_ESteamNetworkingConfig_Float,
m_val = new SteamNetworkingConfigValue_t.OptionValue
{
m_float = 50
}
});
result.Add(new SteamNetworkingConfigValue_t
{
m_eValue = ESteamNetworkingConfigValue.k_ESteamNetworkingConfig_FakePacketReorder_Time,
m_eDataType = ESteamNetworkingConfigDataType.k_ESteamNetworkingConfig_Int32,
m_val = new SteamNetworkingConfigValue_t.OptionValue
{
m_int32 = 500
}
});
SteamNetworkingUtils.SetConfigValue(
ESteamNetworkingConfigValue.k_ESteamNetworkingConfig_FakePacketReorder_Send,
ESteamNetworkingConfigScope.k_ESteamNetworkingConfig_Global,
IntPtr.Zero,
ESteamNetworkingConfigDataType.k_ESteamNetworkingConfig_Float,
floatHandle.AddrOfPinnedObject()
);
SteamNetworkingUtils.SetConfigValue(
ESteamNetworkingConfigValue.k_ESteamNetworkingConfig_FakePacketReorder_Recv,
ESteamNetworkingConfigScope.k_ESteamNetworkingConfig_Global,
IntPtr.Zero,
ESteamNetworkingConfigDataType.k_ESteamNetworkingConfig_Float,
floatHandle.AddrOfPinnedObject()
);
SteamNetworkingUtils.SetConfigValue(
ESteamNetworkingConfigValue.k_ESteamNetworkingConfig_FakePacketReorder_Time,
ESteamNetworkingConfigScope.k_ESteamNetworkingConfig_Global,
IntPtr.Zero,
ESteamNetworkingConfigDataType.k_ESteamNetworkingConfig_Int32,
intHandle.AddrOfPinnedObject()
);
SteamNetworkingUtils.SetConfigValue(
ESteamNetworkingConfigValue.k_ESteamNetworkingConfig_FakePacketDup_Send,
ESteamNetworkingConfigScope.k_ESteamNetworkingConfig_Global,
IntPtr.Zero,
ESteamNetworkingConfigDataType.k_ESteamNetworkingConfig_Float,
floatHandle.AddrOfPinnedObject()
);
SteamNetworkingUtils.SetConfigValue(
ESteamNetworkingConfigValue.k_ESteamNetworkingConfig_FakePacketDup_Recv,
ESteamNetworkingConfigScope.k_ESteamNetworkingConfig_Global,
IntPtr.Zero,
ESteamNetworkingConfigDataType.k_ESteamNetworkingConfig_Float,
floatHandle.AddrOfPinnedObject()
);
SteamNetworkingUtils.SetConfigValue(
ESteamNetworkingConfigValue.k_ESteamNetworkingConfig_FakePacketDup_TimeMax,
ESteamNetworkingConfigScope.k_ESteamNetworkingConfig_Global,
IntPtr.Zero,
ESteamNetworkingConfigDataType.k_ESteamNetworkingConfig_Int32,
intHandle.AddrOfPinnedObject()
);
result.Add(new SteamNetworkingConfigValue_t
{
m_eValue = ESteamNetworkingConfigValue.k_ESteamNetworkingConfig_FakePacketDup_Send,
m_eDataType = ESteamNetworkingConfigDataType.k_ESteamNetworkingConfig_Float,
m_val = new SteamNetworkingConfigValue_t.OptionValue
{
m_float = 50
}
});
result.Add(new SteamNetworkingConfigValue_t
{
m_eValue = ESteamNetworkingConfigValue.k_ESteamNetworkingConfig_FakePacketDup_Recv,
m_eDataType = ESteamNetworkingConfigDataType.k_ESteamNetworkingConfig_Float,
m_val = new SteamNetworkingConfigValue_t.OptionValue
{
m_float = 50
}
});
result.Add(new SteamNetworkingConfigValue_t
{
m_eValue = ESteamNetworkingConfigValue.k_ESteamNetworkingConfig_FakePacketDup_TimeMax,
m_eDataType = ESteamNetworkingConfigDataType.k_ESteamNetworkingConfig_Int32,
m_val = new SteamNetworkingConfigValue_t.OptionValue
{
m_int32 = 500
}
});
*/
floatHandle.Free();
intHandle.Free();
}

View File

@ -73,12 +73,13 @@ public static class Program
transport.TestIpAddress = "127.0.0.1:1234";
// make timeout for client detecting server drop different than timeout for server detecting client drop
transport.Timeout = 5000;
transport.DoFakeNetworkErrors = false;
transport.DoFakeNetworkErrors = true;
transport.OnServerError = (conn, error, s) => Console.Error.WriteLine($"ERROR {conn} {error} {s}");
var theConn = -1;
transport.OnServerConnected = conn => theConn = conn;
transport.OnServerDataReceived = (conn, bytes, i) => Console.WriteLine($"RECV {conn} {bytes.Join()} {i}");
transport.OnServerDataSent = (conn, bytes, i) => Console.WriteLine($"SEND {conn} {i} {bytes.Join()}");
transport.OnServerDataReceived = (conn, bytes, i) => Console.WriteLine($"RECV {conn} {i} {bytes.Join()}");
transport.ServerStart();
@ -94,7 +95,9 @@ public static class Program
switch (Console.ReadKey(true).KeyChar)
{
case 'q':
running = false;
// running = false;
transport.ServerDisconnect(theConn); // mirror does this for us
transport.ServerStop();
break;
case 's':
transport.ServerSend(theConn, new ArraySegment<byte>(new byte[] { 1, 2, 3, 4, 5 }, 1, 5 - 1));
@ -125,7 +128,8 @@ public static class Program
transport.DoFakeNetworkErrors = true;
transport.OnClientError = (error, s) => Console.Error.WriteLine($"ERROR {error} {s}");
transport.OnClientDataReceived = (bytes, i) => Console.WriteLine($"RECV {bytes.Join()} {i}");
transport.OnClientDataSent = (bytes, i) => Console.WriteLine($"SEND {i} {bytes.Join()}");
transport.OnClientDataReceived = (bytes, i) => Console.WriteLine($"RECV {i} {bytes.Join()}");
transport.ClientConnect("76561198150564286");
@ -134,7 +138,7 @@ public static class Program
Console.WriteLine("press q to quit, s to send");
var running = true;
transport.OnClientDisconnected = () => running = false; // mirror normally does this
// transport.OnClientDisconnected = () => running = false; // mirror normally does this
while (running)
{
transport.ClientEarlyUpdate();
@ -143,7 +147,8 @@ public static class Program
switch (Console.ReadKey(true).KeyChar)
{
case 'q':
running = false;
// running = false;
transport.ClientDisconnect();
break;
case 's':
transport.ClientSend(new ArraySegment<byte>(new byte[] { 1, 2, 3, 4, 5 }, 1, 5 - 1));