Эти ошибки становятся все более частыми на моем Игровом сервере. Они заставляют сервер продолжать закрывать и перезапускать...
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, которые могут ограничивать количество подключений...