【问题标题】:Why is my UDPClient null once in a while为什么我的 UDPClient 偶尔为空
【发布时间】:2009-06-22 11:26:29
【问题描述】:

有人可以向我解释为什么这段代码在发送时偶尔会失败,并且 udpLink 出现 null 异常吗?

            udpLink = new UdpClient(ipAddress, 514);
            using (udpLink)
            {
                  udpLink.Send(rawMsg, rawMsg.Length);
            }

这是我如何修复它的新代码。

            udpLink = new UdpClient(ipAddress, 514);
            using (udpLink)
            {
                  if (udpLink != null) udpLink.Send(rawMsg, rawMsg.Length);
            }

有什么想法吗?

【问题讨论】:

  • 代码中的 udp 变量是什么?您的意思是将 udpLink 传递给 using 语句吗?
  • Martin,啊……抱歉,只是在提问时打错字了。

标签: c# exception network-programming udp


【解决方案1】:

根据此代码段是否处于执行数千次的循环中,您可能会最大限度地利用连接(根据经验)。你可以做一个 netstat -an 如果它滚动超过一秒钟,那可能是你的问题。

【讨论】:

    【解决方案2】:

    我不确定这是否真的是问题所在,但我想这是您使用 using 语句的方式。我会这样做:

    using (UdpClient udpLink = new UdpClient(ipAddress, 514))
    {
        udpLink.Send(rawMsg, rawMsg.Length);
    }
    

    【讨论】:

    • 功能上也一样,只是去掉一行代码。
    • 我不确定为什么会这样,但确实如此。在我做出您建议的代码更改后,我已经运行代码一段时间了,甚至没有一个例外。谢谢。
    【解决方案3】:

    我看不出您应该在 udpLink 上获得空指针异常的任何原因。您确定它的 udpLink 为 null 而不是 rawMsg?另外,你确定你抛出的是 NullPointerException 而不是 SocketException 或其他异常?

    【讨论】:

      猜你喜欢
      • 2013-07-19
      • 2017-12-28
      • 1970-01-01
      • 2011-02-16
      • 1970-01-01
      • 2019-11-14
      • 2019-05-26
      • 2014-11-18
      • 1970-01-01
      相关资源
      最近更新 更多