0

我的应用程序通过 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;
        }
    }
}

在这种情况下,标准方法是什么?

4

1 回答 1

1

您必须检查发送数据包的大小。另外,您是否有一个字符或序列告诉服务器它已经结束了?

于 2013-01-27T12:24:12.390 回答