Und der funktioniert sogar:
Die Executiv enthält einen Clienten, der nicht funktioniert(andem ich noch arbeite) und eine Serversoftware, die einwandfrei läuft zum Testen könnt ihr es wiefolgt einstellen:
...der Wert 123 sollte eigentlich eine Logdatei darstellen, aber indemfall wird diese nochnicht benutzt, weswegen ihr den 2ten Parameter durch was ihr wollt ersetzten könnt...Terminal hat geschrieben: [ jan@hjpp-pub ]: ./server -s 123
Port 5000 ist immer frei, aber wenn der Apache nicht läuft, könnt ihr auch Port 80 benutzten(Oder über "netstat" herausfinden, welche noch frei sind). Jetzt könnt ihr in eurem Browser auf 127.0.0.1:5000/<datei> gehen(Beziehungsweise localhost:5000/<datei>)(esseiden ihr lasst das auf einem anderen Rechner laufen), wobei ihr <datei> durch eine Datei im Verzeichniss, indem die Executiv ist ersetzt. Der Browser dürfte nun die Datei öffnen/oder einen Download starten, wenn es keine anzeigbare Datei ist. Im Terminalfenster dürftet ihr nun folgendes sehen:Terminal hat geschrieben:[OK] Use as Server.
Use Port:5000
[OK] Use Port 5000 Ok.
Quit after a number of transferes (0 = unlimited):0
[OK] Quit after 0 transfers Ok.
Server is running.
Da hab ich einmal \n vergessen O_o indemfall habe ich die Datei "fluidscene.blend" gedownloadet.[OK] Connection request: 127.0.0.1
[OK] GET Command recived.
[OK] HTTP Command recived.
[OK] GET Command for file fluidscene.blend found!
[OK] File found. Send now!: fluidscene.blendServer is running.
Das Teil hat aber Null Sicherheit, also kommt bloßnicht auf die Idee, das außerhalb eures Homenetztwerkes zu benutzten *g*
TODO:
- Bei leerem request(ohne das eine explizite Datei genannt wird) die Seite index.html senden(wenn vorhanden)
- Sicherheit, den Server nur auf bestimmte Verzeichnisse begrenzen, und bestimmte Commands nicht zulassen.
- Den Clienten zum laufen bringen.
Wie ich auf die Idee gekommen bin:
Ich musste einige große Dateien im Homenetztwerk hin und herschieben, und auf den Rechnern, aufdem die Dateien drauf sind extra nen Apache zu konfigurieren, war mir zuviel Arbeit, also hab ich halt diesen 183 Zeilige Programm gebastelt Eigentlich sollte via Option -c ein Consolenbasierendes Empfangsprogramm zur Verfügung gestellt werden(Damit auch meine Non-GUI Systeme mitladen können), was aber bislang nochnicht funktioniert.(Da hab ich mir mit Wget weitergeholfen )
Bugtracker:
[WW] HTTP Command not found from parser - Fehlerhafte Anfrage vom Browser Lösung: versucht einen anderen Browser.(Auf Firefox 2 gehts)
[WW] GET Command not found from parser - Keine Datei angegeben Lösung: Wie oben beschrieben eine Datei hinter 127.0.0.1:5000/ setzten
[EE] File not extists Spricht aus sich alleine.
[EE] Please specife a filename. - einfach hinter der -s einen weiteren pseudo parameter setzten.
Benötigte Includes:
Die dürfte jedes Linux haben.#include <sys/types.h>
#include <sys/socket.h>
#include <stdio.h>
#include <netinet/in.h>
#include <arpa/inet.h>
#include <string.h>
Compiliert mit:
Linux linux-yqa4.lan 2.6.25.18-0.2-default #1 SMP 2008-10-21 16:30:26 +0200 i686 i686 i386 GNU/Linux
Linux Binarys:cc (SUSE Linux) 4.3.1 20080507 (prerelease) [gcc-4_3-branch revision 135036
(Datei speichern unter...)
http://jside.bplaced.net/images/server
Quellcode Kommentiere ich noch durch, und Layoute den noch, der ist nämlich ...via vi von mir in der Console geproggt worden, und ist total unleserlich, das ich euch den erstmal nicht zumuten will xD Den gibts dann ganz exklusiv in meinem nächsten Post in diesem Thread
P.s. LOL wenn ich so überlege, was ich in einer "kriesensituation" so alles programmiere....