C # Een gevestigde verbinding werd afgebroken door de software in uw hostmachine

Deze fouten worden steeds vaker op mijn gameserver. Ze zorgen ervoor dat de server blijft sluiten en opnieuw opstarten …

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)

Dit is de code waaruit deze fouten worden gegenereerd:

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();
    }
}

De bufferformaten zijn correct ingesteld, we gebruiken Keepalive op het stopcontact en gebruikten het verzenden en ontvangen time-outs.

Mensen suggereerden dat het uitschakelen van de firewall zou helpen, maar wanneer ik dit doe, start onze game-server (dedicated server) zich opnieuw alsof het wordt aangevallen, dus de firewall moet ingeschakeld blijven.

Heeft iemand anders hiervoor andere oplossingen voor?

PS: We staan ​​achter DDOS Mitigation Services die mogelijk het aantal verbindingen beperken …


Antwoord 1, Autoriteit 100%

Een gevestigde verbinding is afgebroken door de software in uw hostmachine

Dat is een foutbericht van een ketelplaat, het komt uit Windows. De onderliggende foutcode is WSaeconnaborted. Dat betekent echt niet meer dan “verbinding is afgebroken”. Je moet een beetje voorzichtig zijn met de “Your Host Machine” -gedeelte van de zin. In de overgrote meerderheid van Windows-toepassingsprogramma’s is het inderdaad de host die de desktop-app is verbonden met die afgebroken de verbinding. Meestal een server ergens anders.

De rollen zijn echter omgekeerd wanneer u uw eigen server implementeert. Nu moet u het foutbericht lezen als “afgebroken door de toepassing aan de andere kant van de draad”. Dat is natuurlijk niet ongebruikelijk wanneer u een server implementeert, clientprogramma’s die uw server gebruiken, het niet onwaarschijnlijk zijn om een ​​verbinding om welke reden dan ook een verbinding af te breken. IT kan betekenen dat een brandwand of een proxy de verbinding beëindigd, maar dat is niet zeer waarschijnlijk omdat ze meestal niet toestaan ​​dat de verbinding in de eerste plaats wordt vastgesteld.

Je weet niet echt waarom een ​​verbinding werd afgebroken, tenzij je inzicht hebt wat er aan de andere kant van de draad aan de hand is. Dat is natuurlijk moeilijk om langs te komen. Als uw server via internet bereikbaar is, korting dan niet de mogelijkheid die u door een poortscanner wordt onderzocht. Of uw klanten, op zoek naar een spel Cheat.


Antwoord 2, Autoriteit 3%

Dit probleem verschijnt als twee software dezelfde poort gebruiken voor verbinding met de server
Probeer de poort te sluiten op CMD volgens uw besturingssysteem
Start vervolgens uw Android-studio of uw Eclipse of uw software opnieuw op.

Other episodes