C # Установленное соединение было прервано программным обеспечением на вашем хост-компьютере

Эти ошибки становятся все более частыми на моем игровом сервере. Они заставляют сервер продолжать закрываться и перезагружаться ...

System.Net.Sockets.SocketException (0x80004005): An established connection was aborted by the software in your host machine 
   at System.Net.Sockets.Socket.BeginSend(Byte[] buffer, Int32 offset, Int32 size, SocketFlags socketFlags, AsyncCallback callback, Object state) 
   at iRP.Game.Sessions.Session.SendData(Byte[] Data)

Это код, из которого генерируются эти ошибки:

public void SendData(byte[] Data)
{
    try
    {
        if (mSocket == null)
        {
            //Output.WriteLine("[SND] Socket has a null exception, which means it is now invalid. Remove this socket!", OutputLevel.CriticalError);
        }
        else
        {
            mSocket.BeginSend(Data, 0, Data.Length, SocketFlags.None, sendCallback, mSocket);
        }
    }
    catch (Exception e)
    {
        string WhatToWrite = "Error handled (SESSION): " + e.ToString() + "\n\n" + e.Message + "\n\nStack: " + e.StackTrace + Environment.NewLine + "\n\n";
        File.AppendAllText(Environment.CurrentDirectory + "\\data\\fatal.txt", WhatToWrite);
        Program.Stop();
    }
}

Размеры буфера установлены правильно, мы используем KeepAlive для сокета и использовали Тайм-ауты отправки и получения.

Люди предположили, что отключение брандмауэра поможет, но всякий раз, когда я делаю это, наш игровой сервер (выделенный сервер) перезапускается, как будтоНаходится под атакой, поэтому брандмауэр должен оставаться включенным.

У кого-нибудь еще есть другие решения для этого?

PS: мы за DDoS Mitigation Services, которые могут ограничивать количество соединений ...

Ответы на вопрос(1)

Ваш ответ на вопрос