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…