{"id":780,"date":"2010-06-19T10:04:22","date_gmt":"2010-06-19T09:04:22","guid":{"rendered":"http:\/\/www.puls200.de\/?page_id=780"},"modified":"2010-12-28T21:36:09","modified_gmt":"2010-12-28T20:36:09","slug":"lokadressverwaltung-lav","status":"publish","type":"page","link":"https:\/\/www.puls200.de\/?page_id=780","title":{"rendered":"Lokadressverwaltung (LAV)"},"content":{"rendered":"<p>Ein interessantes Projekt hat sich vor einiger Zeit aus einer Forumsdiskussion ergeben. Die Aufgabenstellung: Synchronisation einer Loktabelle auf verschiedenen Rechner. Die <a href=\"http:\/\/cms.spur1mannheim.de\/index.php?option=com_frontpage&Itemid=1\">Spur 1 Freunde Mannheim<\/a> bauen ihre Modul-Arrangements normalerweise in gro\u00dfen Hallen auf. An verschiedenen Stellen stehen mit WLAN vernetzte Laptops, an denen die Adressen mitgebrachter Loks erfa\u00dft werden. Entscheidend dabei ist, da\u00df keine Adresse doppelt vergeben wird, da sonst die Loks \"parallel\" gesteuert werden, was ggf. einen Zugunfall zur Folge haben kann. Deswegen m\u00fcssen \u00c4nderungen an der Tabelle sofort an allen beteiligten Stationen sichtbar werden. Das klang interessant und nicht besonders schwierig, deshalb erkl\u00e4rte ich mich bereit, einen Prototyp zu bauen. Dabei wollte ich ohne eine zentrale Datenbank eines Drittherstellers auskommen. Die Datenstruktur ist nun einfach genug, da\u00df eine XML Datei zur Speicherung ausreichen sollte.<br \/>\nMeine erste Idee war die Verwendung von IP Multicasting. Da nur wenige Rechner im Netz sind und die Update-Rate eher gering ist war mein Gedanke, das Paketverluste fast nie vorkommen sollten. Und es stimmte, das passierte eigentlich nie. Bei mir zuhause im Ethernet. Doch ich hatte die Rechnung ohne WLAN gemacht. Hier kommt eigentlich nur jedes zweite Paket an, was ich dann in l\u00e4ngeren Fehlersessions bemerkte. War also nichts. Daraufhin baute ich die Anwendung um, so da\u00df IP Multicasting nur noch verwendet wird, um die anderen Rechner im Netz zu finden. Dann werden TCP\/IP Direkt-Verbindungen zu allen gefundenen Rechnern aufgebaut und ich \u00fcberlasse dem TCP\/IP Stack die Paket\u00fcbermittlung. Das war schonmal ein Fortschritt. Trotzdem gibt es im WLAN immer noch Probleme, da die Verbindung oft einfach unterbrochen wird. Das \u00e4u\u00dfert sich dann in Socket Fehlern (10054, connection reset by peer), die ohne Keepalive Pakete erst auftauchen, wenn die betreffende Station wieder etwas senden will. Mehr \u00c4rger! Aber inzwischen funktioniert alles ganz zuverl\u00e4ssig.<\/p>\n<p><img decoding=\"async\" src=\"http:\/\/www.puls200.de\/data\/files\/screenshot_lav.jpg\" \/><\/p>\n<p>So sieht es aus, ziemlich unspektakul\u00e4r. Inzwischen ist das Programm bei mehreren Modulgruppen im Einsatz. <a href=\"http:\/\/www.puls200.de\/data\/lav\/help.html\">Hier geht es zum Download \/ Hilfeseite<\/a>.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Ein interessantes Projekt hat sich vor einiger Zeit aus einer Forumsdiskussion ergeben. Die Aufgabenstellung: Synchronisation einer Loktabelle auf verschiedenen Rechner. Die Spur 1 Freunde Mannheim bauen ihre Modul-Arrangements normalerweise in gro\u00dfen Hallen auf. An verschiedenen Stellen stehen mit WLAN vernetzte &hellip; <a href=\"https:\/\/www.puls200.de\/?page_id=780\">Continue reading <span class=\"meta-nav\">&rarr;<\/span><\/a><\/p>\n","protected":false},"author":1,"featured_media":0,"parent":449,"menu_order":0,"comment_status":"open","ping_status":"open","template":"","meta":{"ngg_post_thumbnail":0},"_links":{"self":[{"href":"https:\/\/www.puls200.de\/index.php?rest_route=\/wp\/v2\/pages\/780"}],"collection":[{"href":"https:\/\/www.puls200.de\/index.php?rest_route=\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/www.puls200.de\/index.php?rest_route=\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/www.puls200.de\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.puls200.de\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=780"}],"version-history":[{"count":4,"href":"https:\/\/www.puls200.de\/index.php?rest_route=\/wp\/v2\/pages\/780\/revisions"}],"predecessor-version":[{"id":970,"href":"https:\/\/www.puls200.de\/index.php?rest_route=\/wp\/v2\/pages\/780\/revisions\/970"}],"up":[{"embeddable":true,"href":"https:\/\/www.puls200.de\/index.php?rest_route=\/wp\/v2\/pages\/449"}],"wp:attachment":[{"href":"https:\/\/www.puls200.de\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=780"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}