2009-06-22 11 views
0

Quelqu'un peut-il m'expliquer pourquoi ce code échoue de temps en temps avec une exception nulle pour udpLink lors de l'envoi?Pourquoi mon UDPClient est-il nul de temps en temps?

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

Ceci est le nouveau code sur la façon dont je l'ai corrigé.

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

Des idées?

+1

Quelle est cette variable udp dans votre code? Voulez-vous dire passer udpLink à l'instruction using? –

+0

Martin, ah ... désolé juste une faute de frappe en posant la question. – Rick

Répondre

1

Je ne suis pas sûr si c'est vraiment le problème, mais je suppose que c'est la façon dont vous utilisez l'instruction using. Je le ferais comme ceci:

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

Fonctionnellement, c'est la même chose, tout ce que vous avez fait était de supprimer une ligne de code. –

+0

J'ai écrit, je ne suis pas sûr si cela aide ... – Enyra

+0

Je ne sais pas pourquoi cela a fonctionné, mais il l'a fait. Je cours le code depuis quelque temps maintenant avec aucune exception une fois que j'ai fait votre changement de code suggéré. Merci. – Rick

0

Je ne vois aucune raison pour laquelle vous devriez obtenir une exception de pointeur nul sur udpLink. Vous êtes sûr que son udpLink est null et non rawMsg? En outre, vous êtes sûr que vous lancez une exception NullPointerException et pas une exception SocketException ou une autre exception?

2

Selon que ce segment de code se trouve dans une boucle qui s'exécute des milliers de fois, il se peut que vous atteigniez un maximum de connexions (en parlant d'expérience). vous pouvez faire un netstat -an et s'il défile pendant plus d'une seconde, cela pourrait être votre problème.