123456789101112131415161718192021222324252627282930313233 |
- using System.Net.Sockets;
- namespace kcp2k
- {
- public static class Extensions
- {
- // 100k attempts of 1 KB increases = default + 100 MB max
- public static void SetReceiveBufferToOSLimit(this Socket socket, int stepSize = 1024, int attempts = 100_000)
- {
- // setting a too large size throws a socket exception.
- // so let's keep increasing until we encounter it.
- for (int i = 0; i < attempts; ++i)
- {
- // increase in 1 KB steps
- try { socket.ReceiveBufferSize += stepSize; }
- catch (SocketException) { break; }
- }
- }
- // 100k attempts of 1 KB increases = default + 100 MB max
- public static void SetSendBufferToOSLimit(this Socket socket, int stepSize = 1024, int attempts = 100_000)
- {
- // setting a too large size throws a socket exception.
- // so let's keep increasing until we encounter it.
- for (int i = 0; i < attempts; ++i)
- {
- // increase in 1 KB steps
- try { socket.SendBufferSize += stepSize; }
- catch (SocketException) { break; }
- }
- }
- }
- }
|