UdpClient erhält Broadcast-Adresse

8

In c # verwende ich die UdpClient.Receive Funktion:

%Vor%

Ich bekomme jedoch eine Socket-Ausnahme, die besagt, dass die Adresse nicht mit dem Fehlercode 10049 verfügbar ist Was mache ich, um diese Ausnahme zu negieren?

    
Avik 14.04.2009, 06:23
quelle

4 Antworten

16

Hier ist die jist von Code, den ich gerade in einer Produktions-App verwende, die funktioniert (wir haben ein bisschen extra da, um den Fall zu behandeln, wo der Client Server-Apps auf einer Standalone-Installation laufen). Es ist Aufgabe, UDP-Benachrichtigungen zu erhalten, dass Nachrichten für die Verarbeitung bereit sind. Wie von Adam Alexander erwähnt, ist Ihr einziges Problem, dass Sie IPAddress.Any anstelle von IPAddress.Broadcast verwenden müssen. Sie würden IPAddress.Broadcast nur verwenden, wenn Sie ein Sende-UDP-Paket senden senden möchten.

Richten Sie den udp-Client ein

%Vor%

Und um den Beginn eines asynchronen Empfangs mit einem Callback auszulösen.

%Vor%

Hoffentlich hilft das, Sie sollten in der Lage sein, es so anzupassen, dass es ohne zu viel Problem synchron funktioniert. Sehr ähnlich wie du es tust. Wenn Sie immer noch den Fehler erhalten, dann muss etwas anderes den Port benutzen, den Sie hören wollen.

Also, um zu klären.

IPAddress.Any = Wird zum Empfangen verwendet. Ich möchte auf ein Paket warten, das auf einer beliebigen IP-Adresse ankommt. IPAddress.Broadcast = Wird zum Senden verwendet. Ich möchte ein Paket an jeden senden, der zuhört.

    
Mark Allanson 17.04.2009, 08:53
quelle
4

Für Ihre Zwecke glaube ich, dass Sie IPAddress.Any anstelle von IPAddress.Broadcast verwenden möchten. Hoffe das hilft!

    
Adam Alexander 14.04.2009 06:28
quelle
0

Dieser Fehler bedeutet, dass das Protokoll nicht an die ausgewählte IP / Port-Kombination gebunden werden kann.

Ich habe die UDP-Übertragung seit Ewigkeiten nicht benutzt, aber ich erinnere mich, dass Sie verschiedene IP-Bereiche verwenden müssen.

    
leppie 14.04.2009 06:30
quelle
0

Es ist nichts falsch daran, wie Sie Ihren UdpClient konfiguriert haben. Hast du eine andere Portnummer ausprobiert? Vielleicht wird 1234 bereits von einer anderen App auf Ihrem System verwendet.

    
sipwiz 14.04.2009 06:31
quelle

Tags und Links