![]() |
Ein Server, mehrere Clients, geht das? - Druckversion +- LabVIEWForum.de (https://www.labviewforum.de) +-- Forum: LabVIEW (/Forum-LabVIEW) +--- Forum: LabVIEW Allgemein (/Forum-LabVIEW-Allgemein) +---- Forum: Datenkommunikation (/Forum-Datenkommunikation) +---- Thema: Ein Server, mehrere Clients, geht das? (/Thread-Ein-Server-mehrere-Clients-geht-das) |
Ein Server, mehrere Clients, geht das? - eg - 28.10.2007 14:42 ' schrieb:was sind Pub/Subs? <blond guck> Vielleicht hast du das schon gelesen: http://forums.lavag.org/publish-subscriber...tml&p=37630 ' schrieb:damit ich dir die VIs zeigen kann müsste ich die aus den Projekten rausziehen, aber da ist eine NDA drauf => keine gute Idee und "veröffentlichbar" nachprogrammieren .... hmmm ... keeene zeit, keene lust Es sieht ähnlich wie bei mir aus, das einzige was ich nicht verstanden habe, wozu brauchst du für jeden Client eine eigene Queue in den VIs die die Anfragen von Clients über TCP/IP empfangen? Ansonsten vielen Dank für deine ausführliche Antwort, eg Ein Server, mehrere Clients, geht das? - Benjamin Fuchs - 29.10.2007 08:28 Was man bei TCP Verbindungen machen sollte ist eine art "Alive" Protokoll zu implementieren, sprich ddie Clienten die in der Tabelle stehen alle X Sekunden mit einem PONG einen PING bestätigen lassen. Bzw alle gesendeten Daten zu quitieren. Ein Server, mehrere Clients, geht das? - VDB - 29.10.2007 08:53 ' schrieb:Was man bei TCP Verbindungen machen sollte ist eine art "Alive" Protokoll zu implementieren, sprich ddie Clienten die in der Tabelle stehen alle X Sekunden mit einem PONG einen PING bestätigen lassen. Bzw alle gesendeten Daten zu quitieren. Warum denn das? Bei UDP gebe ich dir Recht. TCP-IP kriegt Verbindungsverluste sehr wohl mit. Übrigens: NI's Modbus Server für TCP-IP hat eine Server-mehrere Clients Struktur: http://zone.ni.com/devzone/cda/epd/p/id/4756 VDB Ein Server, mehrere Clients, geht das? - eg - 29.10.2007 10:01 ' schrieb:Was man bei TCP Verbindungen machen sollte ist eine art "Alive" Protokoll zu implementieren, sprich ddie Clienten die in der Tabelle stehen alle X Sekunden mit einem PONG einen PING bestätigen lassen. Bzw alle gesendeten Daten zu quitieren. ' schrieb:Warum denn das? Bei UDP gebe ich dir Recht. TCP-IP kriegt Verbindungsverluste sehr wohl mit. So ist es, das was ich jetzt noch einbauen will ist die Clients aus der Tabelle auszutragen, sobald die Verbindung aus irgendwelchen Gründen verloren geht. Noch will ich den Dispatcher als Client zu einem anderen Dispatcher zu verbinden zu können. Dazu will ich noch einen Dispatcher-Befehl einbauen "Get available topics" oder sowas, damit ich die Liste bekommen kann und sich subscriben kann. Das wird in der Zukunft zum Debuggen und Fernstreuerung des Programms verwendet. Ausserdem, wie schon gesagt andere Kommunikationsmethoden wie Queue, Notifier und User Events einbauen. Und wenn alles soweit ist, eine abstrahierte Bibliothek erstellen. Es wird doch eine tolle Sache. @VDB mit Modbus hatte ich bis jetzt noch nichts zu tun gehabt, aber schon viel davon gehört. Vielleicht muss ich mich mal damit auseinandersetzen. eg P.S. ganz vergessen, ich werde noch das TCP/IP Protokoll verbessern, 2 Sync Bytes hinzufügen, Paketlänge 2-Byte lang machen und, wahrscheinlich noch die Checksumme hintendranhängen. Problem besteht noch mit Befehlen, wenn ich diese als Enum-Typedef definiere, dann wird die PubSub Bibliothek projektabhängig sein und wenn ich die so wie jetzt vom Typ-String lasse, dann kann es mal passieren, dass die Befehle sich wiederholen, was zu komischen Effekten führen kann. Weiss jemand Rat? Ein Server, mehrere Clients, geht das? - VDB - 29.10.2007 10:22 ' schrieb:So ist es, das was ich jetzt noch einbauen will ist die Clients aus der Tabelle auszutragen, sobald die Verbindung aus irgendwelchen Gründen verloren geht. Noch will ich den Dispatcher als Client zu einem anderen Dispatcher zu verbinden zu können. Dazu will ich noch einen Dispatcher-Befehl einbauen "Get available topics" oder sowas, damit ich die Liste bekommen kann und sich subscriben kann. Das wird in der Zukunft zum Debuggen und Fernstreuerung des Programms verwendet. Ausserdem, wie schon gesagt andere Kommunikationsmethoden wie Queue, Notifier und User Events einbauen. Und wenn alles soweit ist, eine abstrahierte Bibliothek erstellen. Hört und seht sich schon alles sehr gut an! Modbus: ich meinte nur das Grundgerüst für die Kommunikation bei den Modbus-Treiber ist Server-Client(s). Als Protokoll kannst du ja alles verschicken, Modbus, PubSub, HTTP.... Checksumme brauchst du nicht, die packt TCP-IP selber schon hinten dran. Wozu brauchst du die Sync-Bytes? Enum-Problem: was spricht denn dagegen einen Strict-Typedef zu benutzen? Du könntest eine LIB Datei machen mit den Funktionen und das Enum-Control außerhalb davon lassen. VDB Ein Server, mehrere Clients, geht das? - eg - 29.10.2007 10:27 ' schrieb:Hört und seht sich schon alles sehr gut an!Umso interessanter, muss mal Zeit nehmen und sich damit beschäftigen ' schrieb:Checksumme brauchst du nicht, die packt TCP-IP selber schon hinten dran. Wozu brauchst du die Sync-Bytes?Damit das Protokoll, wie ein gewöhnliches binäres Übetragungsprotokoll aussieht. Ich habe schon einige (vielleicht 10-15) gesehen, die sind alle ähnlich aufgebaut. Somit könnte man das Protokoll in der Doku beschreiben und jeder Entwickler, kann dann eine Software dazu schreiben. ' schrieb:Enum-Problem: was spricht denn dagegen einen Strict-Typedef zu benutzen? Du könntest eine LIB Datei machen mit den Funktionen und das Enum-Control außerhalb davon lassen.Ein Beispielchen vielleicht? Danke eg Ein Server, mehrere Clients, geht das? - eg - 29.10.2007 14:34 Ich habe gerade gemerkt, dass wenn das Netzwerk-Kabel getrennt wird, merkt der Server und Client nichts davon, erst dann wenn ich was senden will. Wenn ich aber gerade am TCP Lesen bin, passiert kein Fehler. Kann das jemand bestätigen? eg Ein Server, mehrere Clients, geht das? - eg - 29.10.2007 19:21 Mal eine neue Version mit den neuen Features s.o. eg Ein Server, mehrere Clients, geht das? - cb - 29.10.2007 20:42 ' schrieb:Ich habe gerade gemerkt, dass wenn das Netzwerk-Kabel getrennt wird, merkt der Server und Client nichts davon, erst dann wenn ich was senden will. Wenn ich aber gerade am TCP Lesen bin, passiert kein Fehler. Kann das jemand bestätigen? ja, kann ich bestätigen insbesondere bei WLAN ist sowas extrem lästig ... Ein Server, mehrere Clients, geht das? - eg - 29.10.2007 20:46 ' schrieb:ja, kann ich bestätigen Ok, die automatische Enfernung aus der Tabelle habe ich implementiert, diese funktioniert aber nur, wenn man den Client "beendet" ohne sich zuerst "unsubcriben" zu haben. Bei der physikalischen Trennung der Verbindng passiert nichts. eg |