2009-06-22 9 views
0

Kann mir jemand erklären, warum dieser Code hin und wieder mit einer Null-Ausnahme für udpLink während des Sendens fehlschlägt?Warum ist mein UDPClient von Zeit zu Zeit null?

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

Dies ist der neue Code, wie ich es behoben habe.

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

Irgendwelche Ideen?

+1

Was ist das udp Variable in Ihrem Code? Wolltest du udpLink an die using-Anweisung übergeben? –

+0

Martin, ah ... Entschuldigung nur ein Tippfehler bei der Frage. – Rick

Antwort

1

Ich bin mir nicht sicher, ob es wirklich das Problem ist, aber ich denke, es ist die Art, wie Sie die using-Anweisung verwenden. Ich würde es tun, wie folgt:

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

Funktional, das ist das Gleiche, alles, was Sie getan haben, war eine Zeile Code zu entfernen. –

+0

Ich schrieb, ich bin mir nicht sicher, ob es hilft ... – Enyra

+0

Ich bin mir nicht sicher, warum das funktioniert hat, aber es hat. Ich habe den Code für einige Zeit ausgeführt, mit nicht einmal einer Ausnahme, nachdem ich Ihren Code geändert habe. Vielen Dank. – Rick

0

Ich sehe keinen Grund, warum sollten Sie eine Null-Zeiger-Ausnahme auf udpLink bekommen. Sind Sie sicher, dass der udpLink null und nicht roomMsg ist? Sind Sie sicher, dass Sie eine NullPointerException und keine SocketException oder eine andere Ausnahme auslösen?

2

Je nachdem, ob sich dieses Codesegment in einer Schleife befindet, die tausende Male ausgeführt wird, können Sie möglicherweise auf Verbindungen ausdehnen (aus Erfahrung sprechen). Sie können einen netstat -an tun und wenn es für mehr als eine Sekunde scrollt, sind die Chancen, dass das Ihr Problem sein könnte.