Multicast-Pakete: Senden und Empfangen von Problemen

8

In meiner Anpassung einiger Multicast-Tutorials habe ich meine Methode zum Senden von Paketen geändert.

In meinem Fall erstelle ich eine Warteschlange mit Paketen der Größe bytes[1024] , danach wird sie über Socket.Send() über alle Online-Netzwerkadapter gesendet

Problem:

Beim Senden wird eine andere Methode namens receiveMessage() in einem separaten Thread ausgeführt. Mit Socket.Bind() erfasst es Pakete, aber nur 1 Paket wird erfasst.

Mache ich zu viel Verarbeitung und verzögere (und verliere) die empfangenen Pakete?

AKTUALISIEREN

Ich überlege, eine Warteschlange für eingehende Pakete hinzuzufügen, also 1 Threads erfasst und speichert, die zweite verarbeitet die Pakete.

SendMethod

%Vor%

Empfangsmethode

%Vor%     
dbush 07.09.2015, 13:04
quelle

2 Antworten

1

Wenn du es versuchen willst, hier ist ein funktionierendes Beispiel: Ссылка

Sie können diese wiederverwendbaren Komponenten ( MulticastSender , MulticastReceiver ) in Ihrem Projekt verwenden, wenn Sie möchten ...

    
efaruk 24.01.2016 21:18
quelle
0

Der Absender muss keine Mitgliedschaft binden oder hinzufügen. Jeder Datagramm-Socket kann an eine Multicast-Adresse senden. Der Empfänger muss der Multicast-Adresse eine Mitgliedschaft hinzufügen. Der Sender und der Empfänger müssen sich auch auf den Port einigen (der Empfänger sollte an den Port gebunden sein).

Ihre Multicast-Optionen in jedem Beispiel haben die Argumente umgekehrt.

Die Sockets haben bereits eine Pufferung vom Kernel, so dass Sie Ihren Code nicht mit Nachrichtenwarteschlangen komplizieren müssen.

    
RichN 26.01.2016 18:47
quelle

Tags und Links