server socket - sender MAC-adresse lesen uber SSCK_GetSender(id server socket)

prinzip genutzt von mir:
server socket UDP port 5016 -> register variable -> script.
Status berichte auf die port 5016 -> script schreibt ins buffer bis komplet -> ablage datei -> verarbeitung

Geht OK bis das das system ausgebreitet wird auf verschiedene teilnehmer.
(also mehrere berichte von mehrere teilnehmer auf port 5016)

Verschiedene netz-teilnehmer senden ihre stati an die server socket.
Gesendetes wird in einem buffer geschrieben, zolange das Bericht nicht komplett ist. Ich kan im header von das bericht der ursprung zuweisen … ist OK.

NUR: gibt es mehrere teilnehmer die zufalliger weise gerade am gleichen moment ihre stati mitteilen, geht die sessions-zusammenstellung im Buffer nicht mehr.
nimm A und B. A sendet 4k (ich weis wem (header-aussage)) - ab ins buffer; A sendet weitere 4k -> ich fuge es zusammen mit buffer. B sendet zufalliger weise auch -> geht jetzt auch mit ins buffer (die jetzt zerstört ist weil A noch nicht komplett ist)

Workaround: am server socket nur 1e connection zulassen - Folge: berichte gehen verloren…

lösung: eine SSCK_GetSender(id)=MAC-adresse (oder ip-, oder …)
so dass das script anerkennen kann wem sendet, und uber scriptweise verwaltung in mehrere buffer geschrieben werden kann.

das beispiel erklärt:
nimm A und B. A sendet 4k (ich weiss wem (SSCK_GetSender) - ab in buffer1); A sendet weitere 4k -> verwaltung uber SSCK_GetSender und geht wieder in Buffer1. B sendet zufalliger weise auch -> es gibt noch keine öffne buffer fur B - webschreiben in Buffer2 … A macht schluss -> Ich antworte ‚OK‘ -> buffer1 ist intakt und ready fur weiter verarbeiten. B schriebt lustig weiter in buffer2, C kommt durchaus auch rein Buffer3; Buffer1 kommt frei; D hat auch etwas zu melden -> geht in buffer1 usw usw

Workaround 2: (nééh echt nicht: mehrere ports aufmachen script uber instanzen buffer zuweisen lassen -> ich plane 20-30 teilnehmer …)

@Paresy: das uberlegen wert? Meiner einsicht notwendig…

dringend zustimme!

Ich mache das übrigens im Moment als Workaround tatsächlich über extra Empfänger-Sockets je Teilnehmer mit individuellem Port und identifiziere dann an deren Instanz. Allerdings (im Moment) nur bei 5 festen Teilnehmern.

Vorteil allerdings: Eindeutigere Entkopplung der parallelen Kommunikation. Ein Absender-Identifikator wäre aber spätestens dann notwendig, wenn sich neue Absender bei erstmaligem Empfang automatisch selbst im System einrichten können sollen.

Bump? Bump? Bump?

Die Idee ist gut, aber das lässt sich nicht ganz so einfach realisieren.

Die Idee von Gwanjek hatte ich mir auch schon überlegt (mehrere Ports). Ich würde es toll finden wenn eine Unterscheidung der Absender einfach möglich wäre, das bräuchte ich auch um UPNP Notify Meldungen zu sortieren.

könnte man das nicht auch irgendwie mit IP-Socket-internen Mitteln bzw. -Daten machen? Angefangen über Absender-IP oder spezifischer Ziel-IP (notfalls eben je Quelle eine eigene IP im LAN zu vergeben, kann man ja per NAS vielleicht einstellen und alle ans gleiche Gerät = IPS-Server binden o.ä.), die dann wiederum auswertbar wäre? Ok, sind alles irgendwie Krücken und kaum wirklich zielführend für simple und breite Anwendung…

Gruß Gerd