59

これらのエラーは、ゲーム サーバーでますます頻繁に発生しています。サーバーが閉じて再起動し続ける原因となっています...

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 の背後にいるため、接続数が制限されている可能性があります...

4

3 に答える 3

78

確立された接続が、ホスト マシンのソフトウェアによって中止されました

これは定型的なエラー メッセージで、Windows から出てきます。基になるエラー コードは WSAECONNABORTED です。これは、「接続が中止されました」以上のことを意味するものではありません。フレーズの「ホスト マシン」の部分については、少し注意する必要があります。大多数の Windows アプリケーション プログラムでは、接続を中止したのは、デスクトップ アプリが接続されているホストです。通常、サーバーは別の場所にあります。

ただし、独自のサーバーを実装する場合は、役割が逆になります。ここで、「ネットワークの反対側でアプリケーションによって中止されました」というエラー メッセージを読む必要があります。もちろん、サーバーを実装するときは珍しくありません。サーバーを使用するクライアントプログラムは、何らかの理由で接続を中止する可能性は低くありません。ファイアウォールまたはプロキシが接続を終了したこと意味している可能性がありますが、通常、そもそも接続の確立を許可しないため、可能性は高くありません。

ワイヤの反対側で何が起こっているかを把握していない限り、接続が中断された理由はわかりません。もちろん入手困難です。インターネット経由でサーバーに到達できる場合は、ポート スキャナーによってプローブされている可能性を軽視しないでください。または、ゲームのチートを探しているお客様。

于 2013-01-13T16:28:16.673 に答える