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%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.
Tags und Links c# multicastsocket