Die Weihnachtsferien kommen näher und PI möchte in den Ferien irgendwas programmieren, leider hat er aber keine Ideen. Das Projekt sollte innerhalb von 2-3 Tagen umsetzbar sein, da PI spätestens dann die Motivation verliert. Es soll irgendwas mit Netzwerkprogrammierung und ohne GUI sein. Hat jemand Vorschläge?
Ein FTP-Uploader für Homepages.
Gesteuert durch die Datei ftpupper.ini im aktuellen Verzeichnis.
Code:
host: ftp.example.com //Die Adresse des Servers
dir: html //Unterverzeichnis, so alles rein soll, kann weggelassen werden
login: volkard
password: 1234
threads: 5 //Anzahl der parallelen Verbindungen, kann weggelassen werden
Code:
host: ftp.example.com //Die Adresse des Servers
dir: html //Unterverzeichnis, so alles rein soll, kann weggelassen werden
login: volkard
password: 1234
threads: 5 //Anzahl der parallelen Verbindungen, kann weggelassen werden
Code:
host: ftp.example.com //Die Adresse des Servers
dir: html //Unterverzeichnis, so alles rein soll, kann weggelassen werden
login: volkard
password: 1234
threads: 5 //Anzahl der parallelen Verbindungen, kann weggelassen werden
Das war alles.
Im Verzeichnis, wo die ini liegt, gibt es zwei Unterverzeichnisse:
out //Hier liegt die Homepage, kann zum Beispiel Ziel von Frontpage sein
//oder vorher durch meine Batch mit robocopy gefüllt werden oder
//Hardlink sein
mirror //Hier liegt eine Kopie dessen, was auf dem Server ist
Der Server wird nicht ausgelesen. Zum Start macht man mal mirror leer und den Server leer. Ab dann uploadet man nur noch mit dem Programm.
Es vergleicht mirror und out und alles, was gemacht werden muß, um mirror anzupassen, wird gleichzeitig auf dem Server und gleich drauf im mirror-Verzeichnis gemacht.
Das heißt, Dateien hochschicken, gegebenenfalls vorher nötige Verzeichnisse machen, gegebenenfalls vorher Dateien löschen, die so hießen wie ein zu erstellendes Verzeichnis. Das ist ein wenig tricky.
Problem: Normale Uploader sind schwer in scripts einzubinden, man muß immer rumklicken und das nervt.
Problem: Normale Uploader machen nur eine Verbindung, parallel hat man aber locker doppelten Speed. Wenn nicht mehr. Weil ftp immer eine Datei auf dem Steuerkanal beschreibt. Dann auf dem Datenkanal eine Verbindung aufmacht mit vielen Hin-Und-Herpaketen. Und wieder zumacht. In der ganzen Zeit langweit sich das Netzwerkkabel.
Für optimal frühes Fertigsein, nach Möglichkeit die größen Dateien zuerst uploaden. Damit später die Kleinen kommen und die Threads sich so arrangieren können, daß sie ungefähr gleichzeitig fertig sind.
Durch Multithreading und dadurch, daß man nicht Planen kann, wer wie lange brauchen wird, also ab wann zum Beispiel ein Verzeichnis erstellt ist, sodaß dort Dateien oder weitere Verzeichnisse gemacht werden können, muß wohl irgendwie ein Netzwerk der Aufgaben mit Vorbedingungen im Ram erzeugt werden, das dann abgearbeitet wird.
Ein kleiner Chat mit einem Masterserver.
Der Masterserver soll eine kleine Datenbank enthalten mit den Usern die Online sind.
Die kleine Datenbank sollte so aussehen:
Code:
Username=IP
Username2=IP2
Code:
Username=IP
Username2=IP2
Code:
Username=IP
Username2=IP2
Das sollte recht einfach zu parsen sein.
Der Client soll alle User anzeigen können.
Über eine eingabe "chat username" kann man mit einem User chatten können dann.
PS: Du kannst den Chat so realisieren wie du möchtest das sind nur ein paar Vorschläge wie man es machen könnte.
Als ich "FTP" gelesen hab, hab ich erstmal geprüft, ob dieser Thread wirklich von 2011 ist.
Im Ernst, ich hatte nicht erwartet, dass es immer noch Webseiten gibt, die per FTP hochgeladen werden. Ich dachte, dieses Protokoll wäre endlich mal verschwunden.
Ich nehm zum Hochladen von Webseiten am liebsten rsync oder git. Viel effizienter dürfte kaum möglich sein, außer die Verbindung wird gedrosselt, sodass mehrere parallele Verbindungen schneller sind. Aber bei rsync und git ist normalerweise der upstream konstant zu 100% ausgelastet.
Aber hier geht es ja um Hobby-Projekte, da wär ein multi-threaded FTP-Upload-Tool bestimmt ganz lehrreich. Und wenn es nur zeigt, wie man ein Protokoll nicht entwerfen sollte.
_________________ Wenn Word für Längeres geeignet wäre, würde es nicht Word, sondern Sentence, Page oder Article heißen.
Im Ernst, ich hatte nicht erwartet, dass es immer noch Webseiten gibt, die per FTP hochgeladen werden. Ich dachte, dieses Protokoll wäre endlich mal verschwunden.
Ich sehe hier Websites, die auf einem Windows Server 2000 gehosted sind. Und dort ist FTP das einzige, was vernünftig funktioniert. Da kannst du noch lange warten, bis dieses Protokol verschwindet
_________________ MCPD, MCTS and more! | "It's 7:05am. I have not slept." | www.google.com
@volkard: Das mit den Verzeichnissen und den Absatz danach habe ich leider nicht verstanden. Könntest du mir das nochmal erklären?
Du hast auf dem Server
foo/
bar
foo/datei1
foo/datei2
Du hast lokal
foo
bar/
bar/datei1
Also um bar/ anzulegen muß erst bar weg. Dann kann man bar/datei hochladen.
Also Reigenfolge "del bar" "mkdir bar" "put bar/datei1"
Und um foo hochzuladen muß erst foo/ weg und dazu müssen erst foo/datei1 und foo/datei2 weg.
Wobei aber egal ist, ob zuerst foo/datei1 oder foo/datei2 gelöscht wird. Nur muß klar sein, daß wenn ein Thread sich den Auftrag "del foo/datei1" holt, ihn sich kein anderer mehr holt. Also am besten irgendwie die Aufträge in einen gemeinsamen Container stecken, wo sich jeder was abholen kann.
Nochmal.
Du hast auf dem Server
foo/
foo/datei1
foo/datei2
bar
Du hast lokal
foo
bar/
bar/datei1
"put foo" wartet auf "rmdir foo"
"mkdir bar" wartet auf "del bar"
"rmdir foo" wartet auf "del foo/datei1"
"rmdir foo" wartet auf "del foo/datei2"
"put bar/datei1" wartet auf "mkdir bar"
Also bei Programmstart können die Jobs "del foo/datei1" und "del foo/datei2" und "del bar" sofort starten. Je nachdem, wer dann zuerst fertig ist, kann's mit weiteren Jobs weitergehen.
Bei parallelen Jobs sollte der die höchste Priorität haben, der am meisten Folgeaktionen freischaltet, damit möglichst alle 5 Threads immer was zu tun haben werden.
Bei parallelen put-Jobs sollte die größte Datei die höchste Priorität haben, damit nicht am Ende vier fertig sind und der fünfte noch an einer 100MB-Datei ackert.
Nächstes Thema anzeigen Vorheriges Thema anzeigen
Sie können keine Beiträge in dieses Forum schreiben. Sie können auf Beiträge in diesem Forum nicht antworten. Sie können Ihre Beiträge in diesem Forum nicht bearbeiten. Sie können Ihre Beiträge in diesem Forum nicht löschen. Sie können an Umfragen in diesem Forum nicht mitmachen.
c++.de ist Teilnehmer des Partnerprogramms von Amazon Europe S.à.r.l. und Partner des Werbeprogramms, das zur Bereitstellung eines Mediums
für Websites konzipiert wurde, mittels dessen durch die Platzierung von Werbeanzeigen und Links zu amazon.de
Werbekostenerstattung verdient werden kann.
Die Vervielfältigung der auf den Seiten www.c-plusplus.de, www.c-plusplus.info, www.c-sar.de, www.c-plusplus.net und www.baeckmann.de
enthaltenen Informationen ohne eine schriftliche Genehmigung des Seitenbetreibers ist untersagt
(vgl. §4 Urheberrechtsgesetz). Die Nutzung und Änderung der vorgestellten Strukturen und Verfahren in
privaten und kommerziellen Softwareanwendungen ist ausdrücklich erlaubt, soweit keine Rechte Dritter verletzt werden.
Der Seitenbetreiber übernimmt keine Gewähr für die Funktion einzelner Beiträge oder Programmfragmente, insbesondere
übernimmt er keine Haftung für eventuelle aus dem Gebrauch entstehenden Folgeschäden.