Thread und Sockets...

Status
Nicht offen für weitere Antworten.

quiqum

Mitglied
Hallo Zusammen!

Ich habe ein funktionierende Socket Anwendung geschrieben (d.h. eigentlich zwei: Server, Client). Über eine einfache GUI wählt der Client die Datei aus und schickt sie ab. Der Server empfängt diese und speichert Sie am entsprechenden Ort ab. Die Einstellungen (also Host, Speicherort, Password für Server, etc) sind in einer einfachen ConfigFile.
Meine Frage ist nun, ob es das einen gewissen Standart gibt (oder einfach Wege die man sicher nicht braucht), um so eine Socketanwendung zu schreiben.

Ich habe folgende Methode gebraucht:

1. Der Client öffnet eine Socket Verbindung. InputStream, OutputStream werden erstellt. InputStream an ein Thread gegeben, das alle Daten einliest und diese in eine PipedOutputStream schreibt und von einer PipedInputStream gelesen werden kann. Dafür gibt es eine Methode GetLine, damit man gleich eine ganze Zeile einlesen kann (Wäre hier ein BufferedReader von Vorteil?).
2. Jetzt folgt die Begrüssung (also HELLO, HELLO). Dann fragt der Server nach dem FILENAME und der Client sendet diesen brav. Der Server ist dabei so eingestellt (bzw. eine Funktion), dass er nach 100 Zeichen aufhört zu lesen, um einen Überlauf zu vermeiden. (deshalb kein BufferedReader).
3. Erst jetzt fragt der Server nach dem Passwort. (komisch, ich weiss).
4. Nach erfolgreichen Authentication sendet der Server "START" was den Client auffordert, die Datei zu senden. Gleichzeitig wird Sie dann vom Server mit einem FileOutputStream die entsprechende Datei geschrieben (bzw. erstellt). Nach Abschluss der Übertragung sagen sich die beiden noch freundlich "BYE".
5. Jetzt wird die Verbindung beendet.

Ich hätte auch den Code posten können, aber das wäre peinlich und leider wegen eines internen Reglementes auch verboten.

Was hab ich da alles "falsch" gemacht? Was kann man verbessern? (also hauptsächlich zum Protokoll, Ablauf, Programmierung sekundär)
 
Zuletzt bearbeitet:

ice-breaker

Top Contributor
Wie wäre es ein Teil des FTP-Protokolls dafür zu implementieren?
Ist, wenn ich deine Anwendung richtig verstanden habe, genau das passende.
 
G

Gast2

Gast
1. Der Client öffnet eine Socket Verbindung. InputStream, OutputStream werden erstellt. InputStream an ein Thread gegeben, das alle Daten einliest und diese in eine PipedOutputStream schreibt und von einer PipedInputStream gelesen werden kann. Dafür gibt es eine Methode GetLine, damit man gleich eine ganze Zeile einlesen kann (Wäre hier ein BufferedReader von Vorteil?).
ich kenne jetzt nciht die Piped-Streams (will auch im Moment nicht in die API schauen -> WE) ... aber wenn ich "GetLine" und "ganze Zeilen einlesen" sehe, falsche Streams ... verwende etwas was nur Bytes verwendet ... ansonsten kannst Du nur Text-Dateien ohne Probleme übertragen

2. Jetzt folgt die Begrüssung (also HELLO, HELLO). Dann fragt der Server nach dem FILENAME und der Client sendet diesen brav. Der Server ist dabei so eingestellt (bzw. eine Funktion), dass er nach 100 Zeichen aufhört zu lesen, um einen Überlauf zu vermeiden. (deshalb kein BufferedReader).
wieso so ein kleiner Puffer? ... per Default sind das glaub ich 8kByte ... und welchen Überlauf ... Du hast (a) Java und (b) kann man die Länge der empfangenen Zeichen aus "messen"

Was hab ich da alles "falsch" gemacht? Was kann man verbessern? (also hauptsächlich zum Protokoll, Ablauf, Programmierung sekundär)

bis auf die eigenwillige Reihenfolge mit dem Passwort - ok ... ansonsten würde ich mich ice_breaker anschließen

hand, mogel
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
U Socket Abhören eines Sockets/Ports in extra Thread Netzwerkprogrammierung 8
OnDemand Thread und Ratelimiter Netzwerkprogrammierung 4
F Thread "extern" beenden Netzwerkprogrammierung 3
OnDemand Linux RAM per Thread Netzwerkprogrammierung 3
V Socket Audio Clip loopen ohne neuen Thread Netzwerkprogrammierung 2
C Thread Netzwerkprogrammierung 9
platofan23 Socket Hilfe mit Socket Thread und ArrayList Netzwerkprogrammierung 6
A RMI RMI - Thread Objekte übertragen und auf anderer Machine weiterlaufen lassen Netzwerkprogrammierung 0
S Socket ThreadPool oder Thread pro Client? Netzwerkprogrammierung 11
T Socket Server starten Thread Problem Netzwerkprogrammierung 12
P Wie spreche ich einen Thread an? Netzwerkprogrammierung 20
M Thread Scheduler Java 5.0? Netzwerkprogrammierung 2
7 Mehrere Verbindungen gleichzeitig in einem Thread mit ApacheHTTP Netzwerkprogrammierung 7
D Socket Dynamische Socket-Thread Erzeugung Netzwerkprogrammierung 2
B Socket Thread handling / Reader init Netzwerkprogrammierung 8
Z Socket Socket-Thread falsch? Netzwerkprogrammierung 5
Helgon Socket Thread Pooling Netzwerkprogrammierung 6
M Was macht Thread, wenn er aus einem "leeren" Inputstream liest ? Netzwerkprogrammierung 5
B callback thread udp Netzwerkprogrammierung 2
D RMI und Thread Netzwerkprogrammierung 4
S Kommunikationsproblem, Thread und manuel Netzwerkprogrammierung 4
K ein Thread pro Stream Netzwerkprogrammierung 2
D Weiterer Thread auf Port 843 horcht Netzwerkprogrammierung 7
D Thread problem Netzwerkprogrammierung 3
S Thread, Daten vom Socket lesen Netzwerkprogrammierung 2
S Thread Transport Netzwerkprogrammierung 6
S Socket Thread in Schleife Netzwerkprogrammierung 4
G Objekte per TCP verschicken + Thread Netzwerkprogrammierung 4
T synchronized mit thread und rückgabe Netzwerkprogrammierung 4
2 Class mit ServerSocket erbt von Thread? Netzwerkprogrammierung 3
PAX Outputstream von anderem Thread verwenden lassen Netzwerkprogrammierung 5
C Server mit Multithreading (Thread-Pool) Netzwerkprogrammierung 2
E java.lang.NullPointerException aber nur wenns im Thread läuf Netzwerkprogrammierung 4
F EIN Thread in RMI auf Serverseite Netzwerkprogrammierung 3
G Server Thread beenden Netzwerkprogrammierung 16
T Socket-Thread: Designfrage Netzwerkprogrammierung 14
S Mit Thread arbeitende Maschine Netzwerkprogrammierung 6
T select() ohne NIO - oder wie Worker-Thread sauber beenden? Netzwerkprogrammierung 9
K Selbe Streams mehrfach nutzen (zusätl. Thread) Netzwerkprogrammierung 6
ven000m Thread Frage Netzwerkprogrammierung 11
B Thread.start() (run()) excption Netzwerkprogrammierung 2
M Thread läuft nicht weiter Netzwerkprogrammierung 2
B NullPointerException | Thread Netzwerkprogrammierung 4
U Current thread not owner Netzwerkprogrammierung 3
S readline-thread stoppt vorzeitig Netzwerkprogrammierung 6
J RMI - (RemoteException occurred in server thread) Netzwerkprogrammierung 2
S Webserverprogrammierung: Thread-Beschränkung Netzwerkprogrammierung 2
M Exception in thread "main" java.lang.NoClassDefFou Netzwerkprogrammierung 2
F problem mit thread bzw. netzwerkverbindung! Netzwerkprogrammierung 3
L netzwerk mit thread Netzwerkprogrammierung 3
G RMI thread safe ? Netzwerkprogrammierung 11
A Thread gibt Nachrichten mehrmals aus (Messenger in Java) Netzwerkprogrammierung 3
Jannn Socket Sockets an ein anderes Gerät weiterreichen? Netzwerkprogrammierung 8
JaXnPriVate Java HTTPS Server (Secure Sockets) Netzwerkprogrammierung 15
B Socket Bilder verschicken via Sockets. Heap-Problem. Netzwerkprogrammierung 2
E Socket Parameter über Sockets übergeben und auslesen ! Netzwerkprogrammierung 5
D Socket Verwirrung bei Sockets Netzwerkprogrammierung 1
E Mehrere Sockets Netzwerkprogrammierung 2
N Fragen zu Sockets Client Netzwerkprogrammierung 3
A Sockets Serialisierung Netzwerkprogrammierung 1
K Threads closen und Sockets schliessen Netzwerkprogrammierung 5
H Sockets oder HTTP- Methoden? Netzwerkprogrammierung 3
T Socket Bidirektionale Verbindung mit Sockets Netzwerkprogrammierung 8
P Problem mit Datagram-Sockets Netzwerkprogrammierung 2
C Socket Datagram-Sockets mit integrierter Message Queue? Netzwerkprogrammierung 2
M Problem Client - Server Sockets: .ready() wird nie true! Netzwerkprogrammierung 6
F Technologiewahl: Swing/RMI/Sockets Netzwerkprogrammierung 13
B Sockets, Threads & Plugins Netzwerkprogrammierung 7
T Verbindungsversuche über TCP Sockets von mehreren Threads führt zu Serverabsturz Netzwerkprogrammierung 2
D Mehrere Clients über Java-Sockets Netzwerkprogrammierung 13
F FTP Client mit Sockets - wann sagt der Server nichts mehr? Netzwerkprogrammierung 7
M Socket Sockets Grundlage Netzwerkprogrammierung 25
I Socket HTTP Nachrichten über Sockets verschicken Netzwerkprogrammierung 2
D Socket Raw Sockets mit java.net.*? Bsp ICMP Netzwerkprogrammierung 7
H Komprimierte Sockets Netzwerkprogrammierung 4
V Verbindung zweier Rechner über das Internet mit Sockets Netzwerkprogrammierung 8
L Sockets übergeben Netzwerkprogrammierung 4
G NIO Sockets Architektur Problem Netzwerkprogrammierung 2
S Problem bzgl. Sockets / Server-Client-Struktur Netzwerkprogrammierung 3
B Socket Was muss man bei Sockets beachten? Netzwerkprogrammierung 10
N Socket Sockets und Events Netzwerkprogrammierung 11
A Programm umschreiben von Pipes auf Sockets Netzwerkprogrammierung 12
B Paralleler Dateitransfer: Ein Client - Mehrere Sockets? Wie connecten? Netzwerkprogrammierung 16
D RMI oder Sockets Netzwerkprogrammierung 4
P Sockets +Port Forwarding = Chaos Netzwerkprogrammierung 4
clupus Exception beim Schließen eines Sockets Netzwerkprogrammierung 6
G Sockets und HTTP: Ende des Datenempfangs erkennen Netzwerkprogrammierung 3
J Array oder Object über Sockets Netzwerkprogrammierung 8
O Sockets -- Einsieg Netzwerkprogrammierung 3
S Sockets und gzip Netzwerkprogrammierung 8
B Nachricht über Sockets kommt nicht an Netzwerkprogrammierung 8
data89 Sockets: ein alter Hut - für Euch - für mich nicht! Netzwerkprogrammierung 10
S Wiedereinmal Sockets ;-) Netzwerkprogrammierung 15
J Ascii / Unicode bei Sockets? Netzwerkprogrammierung 2
G Datagram-Sockets für UDP-Kommunikation Netzwerkprogrammierung 2
K "Ende eines Sockets" Netzwerkprogrammierung 9
A Sockets Netzwerkprogrammierung 10
feuervogel Sockets - Lokalen Port aber nicht IP bestimmen Netzwerkprogrammierung 3
C Einfacher Filedownload mit Sockets geht nicht für pdffiles Netzwerkprogrammierung 16
E Sockets, readLine() Netzwerkprogrammierung 7

Ähnliche Java Themen


Oben