我的应用程序通过 Socket 输出 UDP 消息。到目前为止,这一直运行良好,但是最近部署到虚拟化操作系统给我带来了带有 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;
}
}
}
在这种情况下,标准方法是什么?