0

私のアプリケーションは、Socket を介して UDP メッセージを出力します。これは今まで問題なく機能していましたが、最近仮想化された OS にデプロイしたところ、SocketError NoBufferSpaceAvailable で SocketExceptions の問題が発生しました。

通常、UDP メッセージは 1 秒ごとに送信されます。ただし、連続して 2 ~ 3 件のメッセージが前述の例外の対象となることがよくあります。これを処理するための最良の戦略は何ですか? 私の頭に浮かぶ戦略は次のとおりです。

int trials = 0;
while(trials <= 5)
{
    try
    {
        trials++;
        _socket.Send(...);
    }
    catch(SocketException e)
    {
        if(e.SocketErrorCode == SocketError.NoBufferSpaceAvailable)
        {
            Thread.Sleep(100);
        }
        else
        {
            throw;
        }
    }
}

このような場合の標準的なアプローチは何ですか?

4

1 に答える 1

1

送信パケットのサイズを確認する必要があります。また、サーバーに終了であることを伝える文字またはシーケンスはありますか?

于 2013-01-27T12:24:12.390 に答える