@ Rainer

Hallo Rainer,

gib mir mal bitte einen Denkanstoss.

Ich habe ein Clienten. Der quasselt mit 2 Servern. Auf jedem Server liegt eine gewisse Verzeichnis Struktur vor.

Sagen wir mal

Server 1

FreigabeOrdner
 'Ordner1
 'Ordner2
 'Ordner21

Server2
 FreigabeOrdner
 'Ordner1
 'Ordner2
 'Ordner3 
etc.


    
    
    Im Clienten gibt es nun die Möglichkeit die Verzeichnise auszuwaehlen, die Synchronisiert werden sollen. Dazu werden alle Verzeichnisse auf den Server aufgelistet, in der Art
    
    
    
        
        'im Listview 
        
        Servername Verzeichnis Lokales verzeichnis
        
        'Bsp
        
        Anno74 Ordner1 C:\MeineDaten\Ordner1
        Anno74 Ordner21 C:\MeineDaten\Unwichtig
        Rainer Ordner1 C:\MeineDaten\Wichtig 
    
    
    
    
    In dem Bsp. waeren die Server Anno74 und Rainer :wink:
    Die Daten aus den Verzeichnissen sollen dann nach C:\MeineDaten... gespeichert werden.
    
    Wie würdest du das in der Registry ablegen?
    
    Meine Idee waere, wiefolgt
    
    Bsp. 1|1|Pfadname
    
    wobei hier die erste 1 der Server1 waere, die zweite 1 = das 1 Verzeichnis auf dem Server, pfadname = Pfad zum speichern auf dem Clienten. Dann halt noch alle Pfade vom Server in der Registry ablegen, nach dem Motto
    
    1|1|Pfad -\> 1 Server, 1 Verzeichniss, Pfad
    1|2|Pfad -\> 1 Server, 2 Verzeichniss, Pfad
    2|1|Pfad -\> 2 Server, 1 Verzeichniss, Pfad 
    
    Hast du ne bessere Idee? Finde das alles nen bissl unsauber :frowning:
    Ich bekomm langsam graue Haare :frowning: und mehre daran schon 3 Wochen rum. Jedesmal haut es mich wieder 2 Schritte nach hinten :frowning:
    
    MfG Alex

Hi Alex,

besteht da ein Zusammenhang zwischen den Daten auf Server1 und Server2?

Falls nein, würde ich in MeineDateien ein Verzeichnis ‚Daten von Server1‘ anlegen und das mit Server1 synchronisieren. Dann müsste in der REG nur dieser Zusammanhang stehen.

Falls ja, dann eben ein Verzeichnis ‚Serverdaten‘, dann müsste aber sicher gestellt sein, daß die Verzeichnisstruktur der Server zusammenpasst, die müssten ebenfalls synchronisiert sein.

Wie sieht denn das ‚Quasseln‘ aus? Winsock, ‚SendData‘, ‚DataArrival‘ … ?

Womit haben wir es denn technisch zu tun? LAN, Internet? Betriebssysteme? Alles Windows oder sind die Server Linux? Was ist mit FTP? Muss denn Winsock überhaupt sein? Muss der Server aktiv sein, oder genügt es, wenn er passiv die Daten bereitstellt und wenn nicht, warum? Wie sind die Sicherheitsanforderungen? Müssen die Daten verschlüsselt übertragen werden?

Du siehst, ich habe noch nichts verstanden. Kannst Du mir mal kurz die Basis zusammenfassen?

Gruß Rainer

Hi Alex,

noch eine Frage zu den Daten.

Ich weiß, daß Daten zwischen Server und Client synchronisiert werden müssen.

Wie viele Dateien sind das eigentlich so ganz grob?

Wer verändert Dateien, schreibt Neue? Der Server, der Client, mehrere Clients? Kann ein Client von einer Datei eine neue Version haben und davon eine Version vorfinden, die er noch nicht kennt? Benötigt er dann die geänderte Version vom Server oder soll er überschreiben?
Ich weiß ja nicht, was das für Daten sind.

Gruß Rainer

Hallo Rainer,

noch eine Frage zu den Daten.

Ich weiß, daß Daten zwischen Server und Client synchronisiert
werden müssen.

Wie viele Dateien sind das eigentlich so ganz grob?

Puh gute Frage. Das weiss ich selbst nicht! Aber das ist eigentlich unrelevant, da diese Daten, also die erforderlich sind, der Server ermittelt :wink:

Wer verändert Dateien, schreibt Neue? Der Server, der Client,
mehrere Clients? Kann ein Client von einer Datei eine neue
Version haben und davon eine Version vorfinden, die er noch
nicht kennt? Benötigt er dann die geänderte Version vom Server
oder soll er überschreiben?
Ich weiß ja nicht, was das für Daten sind.

Also zum Verstaendnis. Auf dem Sever gibt es ein Freigegebenen Ordner! Dieser ist mit einem Netzlaufwerk verbunden! Dieser beinhaltet wiederrum Unterverzeichnisse. Dort werden Daten abgelegt oder auch geaendert! Ein Client stöpselt sich nun ans Netzwerk dran. Startet die Client Anwendung. Dort kann er einstellen, welche Verzeichnisse er mit dem Server synchronisiert haben möchte! Also es werden mehrere Clienten mit dem server quasseln :wink:

Je nach Einstellungen, connected dann der Client dem Server und dann bekommt der Client eine Liste mit den Daten, die er benötigt. Dieser lädt dann der Client genuesslich herunter!
Auf dem Clienten kann es vorkommen, das das File was er laden soll noch nicht existiert! In dem Falle muss er es neu anlegen! Existiert es schon, so muss es ueberschrieben werden!

So nun schrieb ich das er mit 2 Server’n kommunizieren soll! Vom Prinzip her startet er auf jeden Server die Server Anwendung. Beim Clienten gibt er dann nur die Rechnernamen der beiden Server an und er führt dann die gewuenschten Aktionen mit beiden Servern aus!

Zur Verdeutlichung mal ein Demo

'Server1
Freigegebener Ordner
 'ordner1
 'ordner2
 'odner21
 'ordner3

'Server2
Freigegebener Ordner
 'ordner11
 'ordner21
 'odner211
 'ordner31
 
'nun ein bsp vom Client
Synchronisiert werden sollen

Bsp. 
Client 1

Server1 -\> Ordner1 und Ordner21
Server2 -\> ordner31 und ordner11 sowie ordner211

Client 2

Server1 -\> Ordner2 und Ordner21
Server2 -\> ordner11 

Das ist aber kein Thema, das bereitstellen der Daten macht schon der Server. Der Client bekommt sie dann schon geliefert :wink:

MfG Alex

Hallo Rainer,

besteht da ein Zusammenhang zwischen den Daten auf Server1 und
Server2?

Nein, keinerlei

Falls nein, würde ich in MeineDateien ein Verzeichnis ‚Daten
von Server1‘ anlegen und das mit Server1 synchronisieren. Dann
müsste in der REG nur dieser Zusammanhang stehen.

Und in welcher Form würdest du sie da ablegen?
Könntest du mir mal ein Demo hier posten mit ein paar fiktiven Daten?

Falls ja, dann eben ein Verzeichnis ‚Serverdaten‘, dann müsste
aber sicher gestellt sein, daß die Verzeichnisstruktur der
Server zusammenpasst, die müssten ebenfalls synchronisiert
sein.

Und genau das kann man nicht gewaehrleisten. Denn wenn auf dem Server ein neues Verzeichnis angelegt wird, das der Client nicht mitbekommt :frowning: es seidenn man ruft die Einstellungen auf und liest die Daten erneut ein!

Wie sieht denn das ‚Quasseln‘ aus? Winsock, ‚SendData‘,
‚DataArrival‘ … ?

Das siehst du in der ServerAnwendung!
Bei der Client Anwendung schreibe ich dir dann welches Kommando, welches nur Zahlen sind, bedeutet :wink:

Womit haben wir es denn technisch zu tun? LAN, Internet?

Also derzeit nur im LAN! Sprich wir koennen die Daten mittels FileCopy kopieren :wink:

Betriebssysteme? Alles Windows oder sind die Server Linux? Was
ist mit FTP?

Soweit ich weiss, alles Window’s Rechner (NT BAsierend)

Muss denn Winsock überhaupt sein? Muss der Server
aktiv sein, oder genügt es, wenn er passiv die Daten
bereitstellt und wenn nicht, warum? Wie sind die
Sicherheitsanforderungen? Müssen die Daten verschlüsselt
übertragen werden?

Vom Prinzip her koennte man das auch ohne Server Anwendung lösen und die Clienten selber nachschauen lassen, aber das wollte Joe nicht. Ergo muss die Serveranwendung gestartet sein!
Die Daten muessen nicht verschluesselt werden!
Urspruenglich habe ich es mal probiert. Also sie zu verschluesseln, die Checksumme zu ermitteln. Aber dann geht die Rechenzeit in die Knie. Stell dir nur mal vor, du willst ein File von 3 GB transferieren. Da kannste nebenbei arbeiten gehen :frowning: Von daher habe ich das vorerst weggelassen und wollte es wenn erst einmal alles steht, optional einbauen :wink:

Du siehst, ich habe noch nichts verstanden. Kannst Du mir mal
kurz die Basis zusammenfassen?

Puh, ok. Also kommen wir mal zur Serveranwendung!

Sie wird gestartet. Dort wird der erste registriert und die Einstellungen aufgerufen! Dort muss man angeben, welchen Port er horchen soll. Auch muss man dort angeben, welche Verzeichnisse alles ueberwacht werden sollen. Dieser dialog wird nur beim ersten Start aufgerufen. Ansonsten muss man das uebers Menu machen.
Wenn das geschehen ist, oder die Serveranwendung > 1 mal gestartet wird, so werden sofort die zu ueberwachenden Verzeichnisse eingelesen!
Änderungen werden dann in der DB gespeichert. Der Server geht nun auf horchen.
Die Clienten koennen sich nun mit dem Server verbinden!
Kommt nun ein Anfrage zur Synchronisation zustande, so beginnt er damit wiefolgt!

Der Server schaut in der DB nach, ob schon Daten vom Clienten vorhanden sind!

Sind keine Vorhanden, so sendet er das Kommando an den Clienten. Nee iss nich, mir fehlen deine Daten! *grins*
Sind aber Daten vorhanden, so schaut er nach, welche Daten der Server hat, welche der Client nicht hat oder wo die Version
Servername Verzeichnis

in einem Listview. Dort kannst du nun einen Eintrag selektieren und dann auf hinzufuegen klickern. Dort waehlst du dann das verzeichnis aus, welches synchronisiert werden soll ( auf dem Clienten)
Verzeichnisse auf dem Server die nicht synchronisiert werden sollen, kann man dort löschen ( aus der Liste).
Nachdem das alles erledigt ist, kehrt er zum start zurueck, welches ich gleich schreibe :smile:

Startest du den Clienten >1 geht er gleich zum Start über!

Der Start. Der Client liesst alle Daten aus seinen zu synchronisierenden Verzeichnissen ein! Er connected dann mit beiden Servern und sendet dem ersten Server das Kommando, du ich will synchronisieren.

1:
Der Server sendet ihm die Daten. Diese werden in einer Collection abgelegt Danach geht er zu 3!

2:
Der Server sendet ihm, Neee iss nich, mir fehlen Daten, dann sendet der Client ihm seine Daten, sprich welche er schon hat! Er geht dann in eine Warteschleife und wartet bis er die Dateiliste zum laden bekommt. Hat er die geht er weiter zu 3

3: Der Client macht das selbe Spiel wie mit dem Server1 ( Sprich 1 und 2)

4: In der Collection stehen nun alle Daten die er brauch. nun muss er filtern. Sagen wir mal so, der Client will ja nur 2 Verzeichnisse zum Beispiel sync. haben, er bekommt aber vom Server ergo eine Liste, welche Daten er laden muss, von all seinen Verzeichnissen. Dort muessen die unnötigen Verzeichnisse entfernt werden!

Bsp.

auf dem Server liegt im Ordner „Ordner1“ das File abc.exe und im Ordner2 das File def.exe und im Ordner3 das file ghi.exe
Der Client will aber nur Ordner1 und Ordner 3 sync. haben.
Beim Clienten liegt im Ordner3 aber bereits das File ghi.exe, welches identisch ist, so bekommt er eine Liste wo drinnen steht. Ordner1\abc.exe und Ordner2\def.exe
Wie man sieht muss das File def.exe nicht sync. werden, also entfernen aus der Collection!

Die erste Hürde darin besteht, das wenn zum Beispiel der direkte Pfad zum File abc.exe auf dem Server zum Bsp. wiefolgt lauten koennte

„D:\MeineDaten\Public\Ordner1\abc.exe“
hierbei waere Public der Frigegebene Ordner. Aber diesen Namen wissen wir nicht und wir muessen aus dem pfad schauen, welches File wohin gehört. Aber das sollte kein Thema sein. Einfach mit instr und left nen vergleich machen :wink:

Wenn wir nun die Daten gefiltert haben, so lädt dann der Client genuesslich die Daten via FileCopy und der UNC Notation oder halt dem netzlaufwerk die Daten.

Mehr ist es eigentlich nicht! Hast du soweit die Funktionsweise verstanden? Traust du dich daran mit zu basteln?

MfG Alex

Hi Alex,

Falls nein, würde ich in MeineDateien ein Verzeichnis ‚Daten
von Server1‘ anlegen und das mit Server1 synchronisieren. Dann
müsste in der REG nur dieser Zusammanhang stehen.

Und in welcher Form würdest du sie da ablegen?
Könntest du mir mal ein Demo hier posten mit ein paar fiktiven
Daten?

hmmm, wie Du weißt, habe ich noch nicht in die Registry geschrieben, ich würde also dieses http://www.activevb.de/tipps/vb6tipps/tipp0107.html Beispiel nehmen und da alles auskommentieren, was ich nicht brauche bis es mir kurt genug ist. Ob ich am Ende genug verstanden habe um das ohne Anleitung zu tippen, weißich noch nicht. Ein paar Zeilen mehr werden das aber schon, Du hast ja wohl schon Übung damit, wozu soll das Dummy-Programm gut sein?

Schreiben würde ich jedenfalls nur den einen Pfad, der im Programm später ohnehin durch einen Laufwerksbuchstaben ersetzt wird, so da0 man dann einfach kopieren kann …

Filecopy „x:“ & RestPfad, „y:“ & RestPfad

Falls ja, dann eben ein Verzeichnis ‚Serverdaten‘, dann müsste
aber sicher gestellt sein, daß die Verzeichnisstruktur der
Server zusammenpasst, die müssten ebenfalls synchronisiert
sein.

Und genau das kann man nicht gewaehrleisten. Denn wenn auf dem
Server ein neues Verzeichnis angelegt wird, das der Client
nicht mitbekommt :frowning: es seidenn man ruft die Einstellungen auf
und liest die Daten erneut ein!

Entweder Client oder Server muss die vollständige Verzeichnisstruktur ab dem relevanten Knoten beider Recchner lesen, das Datum letzte Veränderung lesen und an den Clieneten eine Liste übergeben, welche Dateien kopiert werden sollen.

Wie ich Joe verstanden hatte, dautert ihm das rekursive Durchsuchen in der schnellsten Variante noch zu lang, das soll also vorher asynchron passieren, bein Zugriff soll nur noch auf bereits vorhandene Listen zugegriffen werden. Wenn dadurch eine Datei, die erst eine Stunde alt ist, nicht mit kopiert wird, scheint das nicht so dramatisch zu sein.

Wie sieht denn das ‚Quasseln‘ aus? Winsock, ‚SendData‘,
‚DataArrival‘ … ?

Das siehst du in der ServerAnwendung!
Bei der Client Anwendung schreibe ich dir dann welches
Kommando, welches nur Zahlen sind, bedeutet :wink:

Womit haben wir es denn technisch zu tun? LAN, Internet?

Also derzeit nur im LAN! Sprich wir koennen die Daten mittels
FileCopy kopieren :wink:

OK, wir bekommen Laufwerksbuchstaben, ‚Root‘-verzeichnisse und ab da identische Strukturen. Das ist schon mal schön.

Betriebssysteme? Alles Windows oder sind die Server Linux? Was
ist mit FTP?

Soweit ich weiss, alles Window’s Rechner (NT BAsierend)

OK. Danke daß Du nicht geschrieben hast: ‚Dumme Frage, auf Client und Server sollen VB-Programme laufen …‘

Muss denn Winsock überhaupt sein? Muss der Server
aktiv sein, oder genügt es, wenn er passiv die Daten
bereitstellt und wenn nicht, warum? Wie sind die
Sicherheitsanforderungen? Müssen die Daten verschlüsselt
übertragen werden?

Vom Prinzip her koennte man das auch ohne Server Anwendung
lösen und die Clienten selber nachschauen lassen, aber das
wollte Joe nicht. Ergo muss die Serveranwendung gestartet
sein!

Joe war das rekursive Durchsuchen über das Netzwerk zu langsam, stimmt.

Die Daten muessen nicht verschluesselt werden!
Urspruenglich habe ich es mal probiert. Also sie zu
verschluesseln, die Checksumme zu ermitteln. Aber dann geht
die Rechenzeit in die Knie. Stell dir nur mal vor, du willst
ein File von 3 GB transferieren. Da kannste nebenbei arbeiten
gehen :frowning: Von daher habe ich das vorerst weggelassen und wollte
es wenn erst einmal alles steht, optional einbauen :wink:

*gg* klar. Im Lan halte ich verschlüsseln auch für überflüssig.

Du siehst, ich habe noch nichts verstanden. Kannst Du mir mal
kurz die Basis zusammenfassen?

Puh, ok. Also kommen wir mal zur Serveranwendung!

Sie wird gestartet. Dort wird der erste registriert und die
Einstellungen aufgerufen! Dort muss man angeben, welchen Port
er horchen soll. Auch muss man dort angeben, welche
Verzeichnisse alles ueberwacht werden sollen. Dieser dialog
wird nur beim ersten Start aufgerufen. Ansonsten muss man das
uebers Menu machen.
Wenn das geschehen ist, oder die Serveranwendung > 1 mal
gestartet wird, so werden sofort die zu ueberwachenden
Verzeichnisse eingelesen!
Änderungen werden dann in der DB gespeichert. Der Server geht
nun auf horchen.
Die Clienten koennen sich nun mit dem Server verbinden!
Kommt nun ein Anfrage zur Synchronisation zustande, so beginnt
er damit wiefolgt!

Der Server schaut in der DB nach, ob schon Daten vom Clienten
vorhanden sind!

Sind keine Vorhanden, so sendet er das Kommando an den
Clienten. Nee iss nich, mir fehlen deine Daten! *grins*
Sind aber Daten vorhanden, so schaut er nach, welche Daten der
Server hat, welche der Client nicht hat oder wo die Version

Servername Verzeichnis

in einem Listview. Dort kannst du nun einen Eintrag
selektieren und dann auf hinzufuegen klickern. Dort waehlst du
dann das verzeichnis aus, welches synchronisiert werden soll (
auf dem Clienten)
Verzeichnisse auf dem Server die nicht synchronisiert werden
sollen, kann man dort löschen ( aus der Liste).
Nachdem das alles erledigt ist, kehrt er zum start zurueck,
welches ich gleich schreibe :smile:

Startest du den Clienten >1 geht er gleich zum Start über!

Der Start. Der Client liesst alle Daten aus seinen zu
synchronisierenden Verzeichnissen ein! Er connected dann mit
beiden Servern und sendet dem ersten Server das Kommando, du
ich will synchronisieren.

1:
Der Server sendet ihm die Daten. Diese werden in einer
Collection abgelegt Danach geht er zu 3!

Hast Du da schon mal einen SpeedTest gemacht? Wie lange dauer das denn? Länger, als die Liste als Textfile zu laden, splitten …?

2:
Der Server sendet ihm, Neee iss nich, mir fehlen Daten, dann
sendet der Client ihm seine Daten, sprich welche er schon hat!
Er geht dann in eine Warteschleife und wartet bis er die
Dateiliste zum laden bekommt. Hat er die geht er weiter zu 3

3: Der Client macht das selbe Spiel wie mit dem Server1 (
Sprich 1 und 2)

4: In der Collection stehen nun alle Daten die er brauch. nun
muss er filtern. Sagen wir mal so, der Client will ja nur 2
Verzeichnisse zum Beispiel sync. haben, er bekommt aber vom
Server ergo eine Liste, welche Daten er laden muss, von all
seinen Verzeichnissen. Dort muessen die unnötigen
Verzeichnisse entfernt werden!

??? Du hattest Doch am Anfang: ‚Es wird vom User festgelegt, welche Verzeichnisse synchronisiert werden sollen.‘ Das kann man dem Server doch mitteilen, daß der nur diese Daten dem Clienten anbietet.

Bsp.

auf dem Server liegt im Ordner „Ordner1“ das File abc.exe und
im Ordner2 das File def.exe und im Ordner3 das file ghi.exe
Der Client will aber nur Ordner1 und Ordner 3 sync. haben.
Beim Clienten liegt im Ordner3 aber bereits das File ghi.exe,
welches identisch ist, so bekommt er eine Liste wo drinnen
steht. Ordner1\abc.exe und Ordner2\def.exe
Wie man sieht muss das File def.exe nicht sync. werden, also
entfernen aus der Collection!

Hmmm, nun weiß ich wieder nicht mehr, was der Server sinnvolles tut. ich hatte am Anfang angenommen, das weiß der Server schon und bietet diese Daten erst gar nicht an.

Die erste Hürde darin besteht, das wenn zum Beispiel der
direkte Pfad zum File abc.exe auf dem Server zum Bsp. wiefolgt
lauten koennte

„D:\MeineDaten\Public\Ordner1\abc.exe“
hierbei waere Public der Frigegebene Ordner. Aber diesen Namen
wissen wir nicht und wir muessen aus dem pfad schauen, welches
File wohin gehört. Aber das sollte kein Thema sein. Einfach
mit instr und left nen vergleich machen :wink:

ähmmmm. Es gibt den Serverpfad, den man in eine Laufwerk schreiben kann. Geht das nicht mit der lokalen Platte auch? ich denke doch.

Dann ist „D:\MeineDaten\Public“ = „X:“, der Server wird „Y:“ und alles was folgt hat identisch zu sein. Wenn „X:\V1\D1.txt“ gleich „X:\V2\D1.txt“ ist, dann gibt es auch „Y:\V1\D1.txt“ gleich „Y:\V2\D1.txt“ und das kann man ja schon im Vorfeld verbieten. Die Sreveranwendung kann/soll so eine doppelte Datei ger nicht erst zum synchronisieren anbieten, am besten nicht zulassen, dann hat sie der Client auch nicht.

Wenn wir nun die Daten gefiltert haben, so lädt dann der
Client genuesslich die Daten via FileCopy und der UNC Notation
oder halt dem netzlaufwerk die Daten.

OK. Der Schluss war schon klar. :smile:

Mehr ist es eigentlich nicht! Hast du soweit die
Funktionsweise verstanden? Traust du dich daran mit zu
basteln?

Verstanden ja, aber wie bereits geschieben habe ich noch Bedenken, ob das so die optimale Lösung ist. ich habe mit Winsock noch nie etwas gemacht, wo es auf Geschwindigkeit ankam.

Daß sich der Client am Server anmelden muss ist klar, aber ob er die Liste nicht besser in ein File scchreibt und nur den Pfad zu der Liste überträgt, bin ich unsicher.

Was noch unklar war: Erst schreibst Du, der server weiß, was der Client braucht und dann soll der Cleint doch selbst filtern, ob er ein Verzeichnis überhaupt benötigt. Hast Du da vergessen, was Du vother schon erledigt hast?

Was mir nun auch unklar ist, was willst Du in der Registry?
Du überträgst alle Verzeichnisstrukturen auf den Server, der hat die in der Datenbank, und kann sie dem Clienten mitteilen. Keine Ahnung, was Du in die Regsitry schreiben willst. Wenn das alles auf dem Server liegt, kann auch mal ohne Folgen eine Festplatte abrauchen. Ich würde keine Daten, die für die Funktion wichtig sind, lokal speichern.

Nötig ist lediglich eine Funktion: ‚Hallo Server! Ich bin noch Client1, aber ich habe alle Daten vergessen, rich mal rüber …‘

Gruß Rainer

Hi Alex,

OK, wichtig war dabei, daß der Client Daten nur liest, keine veränderten zurück schreibt. Das ist also eine Einbahnstraße, das macht die Sache leichter.

Gruß Rainer

PS. Du wolltest das Projekt schicken. Falls Du das getan hast und auf eine Reaktion wartest … es ist nicht angekommen.

Hallo Rainer,

hmmm, wie Du weißt, habe ich noch nicht in die Registry
geschrieben, ich würde also dieses
http://www.activevb.de/tipps/vb6tipps/tipp0107.html Beispiel
nehmen und da alles auskommentieren, was ich nicht brauche bis
es mir kurt genug ist. Ob ich am Ende genug verstanden habe um
das ohne Anleitung zu tippen, weißich noch nicht. Ein paar
Zeilen mehr werden das aber schon, Du hast ja wohl schon Übung
damit, wozu soll das Dummy-Programm gut sein?

Mache dir mal dazu gedanken. Das ist fertig und steht alles in ein Modul drinnen. Du musst nur die gewissen Functionen aufrufen und volla steht der Wert dann als String oder dword etc. drinnen :smile:

Schreiben würde ich jedenfalls nur den einen Pfad, der im
Programm später ohnehin durch einen Laufwerksbuchstaben
ersetzt wird, so da0 man dann einfach kopieren kann …

Filecopy „x:“ & RestPfad, „y:“ & RestPfad

Ja das ist mir schon klar. Aber woher bekommt er die Zuordnung, von welchem Server er die Daten zu lesen hat?

Entweder Client oder Server muss die vollständige
Verzeichnisstruktur ab dem relevanten Knoten beider Recchner
lesen, das Datum letzte Veränderung lesen und an den Clieneten
eine Liste übergeben, welche Dateien kopiert werden sollen.

Nein, das macht einmal der Server bei sich und einmal der Client bei sich! Danach schickt der Client die Daten( also welche Files er hat, zum Server!)Der Client macht das aber nur beim ersten Start, also das er dem Server seine Daten sendet! Das ist optimal!

Wie ich Joe verstanden hatte, dautert ihm das rekursive
Durchsuchen in der schnellsten Variante noch zu lang, das soll
also vorher asynchron passieren, bein Zugriff soll nur noch
auf bereits vorhandene Listen zugegriffen werden. Wenn dadurch
eine Datei, die erst eine Stunde alt ist, nicht mit kopiert
wird, scheint das nicht so dramatisch zu sein.

So wie ich es bisher realisiert habe, kann man die Sync. manuell aufrufen oder halt automatisch nach xyz Minuten welche man einstellen kann. Von daher bekommt man jede Aenderung mit!

OK, wir bekommen Laufwerksbuchstaben, ‚Root‘-verzeichnisse und
ab da identische Strukturen. Das ist schon mal schön.

Anders, Rainer.
Für jeden Rechner der Im Netzwerk ist, ist ein Laufwerksbuchstabe vergeben! Joe gibt die Rechnernamen an. Ich habe es so gelöst, das ich mir alle Laufwerke auflisten lasse, dort die NMetzlaufwerke ermittle. Anhand der netzlaufwerke, ermittle ich den Servernamen! Diesen vergleich ich mit Joe’s angaben. Stimmt das, so habe ich das Netzlaufwerk(NLW) Anhand des NLW ermittle ich dann die UNC Notation.
Sprich \JoesRechner\Public\ zum Bsp.
Somit koennen wir dann entweder ueber der UNC Notation auf die Daten zugreifen oder ueber das NLW! Die Verzeichnis Struktur auf dem NLW, ermittle ich auch. Das ist kein Thema!

OK. Danke daß Du nicht geschrieben hast: ‚Dumme Frage, auf
Client und Server sollen VB-Programme laufen …‘

*feix* Wobei das auch ne gute Idee waere das als Antwort zu posten :smiley:

Joe war das rekursive Durchsuchen über das Netzwerk zu
langsam, stimmt.

Richtig und genau das machen wir ja nun nicht mehr!
Bei der Serveranwendung werden bei jeden Start alle Daten eingelesen / ermittelt. Das dauert zwar eine Weile, aber die Serveranwendung wird eigentlich nur selten gestartet und beendet. Der Client liest seine Daten nur bei Bedarf ein und sendet diese dem Server. Somit hat er auch die Daten!

*gg* klar. Im Lan halte ich verschlüsseln auch für
überflüssig.

Meine Rede. Wobei eine Überprüfung des CRC32 sinnvoll waere. Aber das dauert zu lange :frowning:

Hmmm. Der Server kennt also den Clienten, hat in dem Fall die
Daten schon und überträgt sie nur.
Wenn auf dem Server nur ein File liegt:
‚Daten_fuer_Client1.txt‘ und der Client das liest, was ist
dann anders? Ich weiß nicht, wie schnell mit Winsock Daten
übertragen werden …

Anders Rainer :s
Der Client sagt, du ich will sync. Dann sagt der Server ok. Schaut in die DB welche Daten ( Files beim ihm installiert sind und welche beim Clienten!) Danach erstellt er eine Liste, welche Dateien er kopieren muss! Diese ( nur die Pfade) schreibt er in ein File und sendet diese dem Clienten(ueber winsock)! Der Client schaut nach welche files das sind und kopiert sie dann!

OK, der Client kann auch eine Liste schreiben, was er alles
aktualisiert hat.

Genau!

UNC Notation? Gleich mal Wiki fragen … :smile:

das ist die Pfadangabe im Netzwerk \Servername\Freigabename :wink:

Hast Du da schon mal einen SpeedTest gemacht? Wie lange dauer
das denn? Länger, als die Liste als Textfile zu laden,
splitten …?

Das geht sehr flink! Eine Collection bietet auch den Vorteil das man es abbrechen kann und die Daten dann nach wie vor noch in der Collection drinnen stehen :smile: Das TextFile einfach so zu splitten geht net einfach, weil … kurze erklärung

Es werden die Daten auf den Server ermittelt und in ein Temp. Recordset geschrieben! Diese Recordset wird dann lokal gespeichert!
Beim laden, wird ein temp. recordset erstellt und dieses dann geladen aus dem File. Also stehen dann die daten in einem Recordset!

??? Du hattest Doch am Anfang: ‚Es wird vom User festgelegt,
welche Verzeichnisse synchronisiert werden sollen.‘ Das kann
man dem Server doch mitteilen, daß der nur diese Daten dem
Clienten anbietet.

Richtig, dazu muss ich erwaehnen. Der Befehl zum Sync. lautet „4“
Daran erkennt der Server, aha er will sync. Urspruenglich war es so geplant, das es nur 1 Server ist! Und das immer alle Verzeichnisse sync. werden sollen! Das man das nun einstellen kann, war nicht geplant. Da ich auch keine Lust hatte, nun alles im Server wieder umzubauen, habe ich diese Variante genommen. Aber wir koennen das gerne noch in der Server Anwendung Implementieren. Sprich das das Kommand 4| Pfad1|Pfad2|Pfad3 etc kommt und der Server das dann schon filtert. Dann faellt das beim Clienten weg.

Ist kein Thema :smile: Dann machen wir das so :smile:

Hmmm, nun weiß ich wieder nicht mehr, was der Server
sinnvolles tut. ich hatte am Anfang angenommen, das weiß der
Server schon und bietet diese Daten erst gar nicht an.

Er bietet halt alle Daten an und nicht die spezifischen, aber das bauen wir halt um :smile:

ähmmmm. Es gibt den Serverpfad, den man in eine Laufwerk
schreiben kann. Geht das nicht mit der lokalen Platte auch?
ich denke doch.

Wie meinst du das ?

Dann ist „D:\MeineDaten\Public“ = „X:“, der Server wird
„Y:“ und alles was folgt hat identisch zu sein. Wenn
„X:\V1\D1.txt“ gleich „X:\V2\D1.txt“ ist, dann gibt es auch
„Y:\V1\D1.txt“ gleich „Y:\V2\D1.txt“ und das kann man ja schon
im Vorfeld verbieten. Die Sreveranwendung kann/soll so eine
doppelte Datei ger nicht erst zum synchronisieren anbieten, am
besten nicht zulassen, dann hat sie der Client auch nicht.

Ja, ok, aber auf dem Clienten koennen die Pfade ja anders sein, je nach Einstellungen. Sprich auf dem Server zum Bsp

d:\MeineDaten\Public\Ordner1 nach Client e:\empfangen\Server1\MeineDaten

Verstanden ja, aber wie bereits geschieben habe ich noch
Bedenken, ob das so die optimale Lösung ist. ich habe mit
Winsock noch nie etwas gemacht, wo es auf Geschwindigkeit
ankam.

Hm, wie gesagt, ich schicke dir mal die Serveranwendung und da bauen wir nun erst einmal das Dinge wieder um :s

Daß sich der Client am Server anmelden muss ist klar, aber ob
er die Liste nicht besser in ein File scchreibt und nur den
Pfad zu der Liste überträgt, bin ich unsicher.

Spielt es im Netzwerk eine Rolle ob man nun 1 KB sendet oder 8 ? Ich denke mal der Zeitunterschied ist unrelevant oder ?

Was noch unklar war: Erst schreibst Du, der server weiß, was
der Client braucht und dann soll der Cleint doch selbst
filtern, ob er ein Verzeichnis überhaupt benötigt. Hast Du da
vergessen, was Du vother schon erledigt hast?

Das ruehrte daher das der Server im alle Daten die ungleich sind mit dem auf dem Clienten sendet. Und das wiederrum durch die nachtraegliche Aenderung :frowning:

Was mir nun auch unklar ist, was willst Du in der Registry?
Du überträgst alle Verzeichnisstrukturen auf den Server, der
hat die in der Datenbank, und kann sie dem Clienten mitteilen.
Keine Ahnung, was Du in die Regsitry schreiben willst. Wenn
das alles auf dem Server liegt, kann auch mal ohne Folgen eine
Festplatte abrauchen. Ich würde keine Daten, die für die
Funktion wichtig sind, lokal speichern.

Das sind nur Einstellungen. Wann soll sync. werden. Welche Verzeichnisse. Wie soll das proggi gestartet werden etc. :wink:

MfG Alex