ERLEDIGT
NEIN
NEIN
ANTWORTEN
2
2
ZUGRIFFE
537
537
EMPFEHLEN
-
19.02.09 17:18 #1
- Registriert seit
- Oct 2003
- Beiträge
- 117
Hi Forum
ich habe bereits eine LoginServer-Klasse implementiert, der auf einem bestimmten Port X horcht und werkelt - soweit so gut. Request kommt auf dem Port, wird verarbeitet - wunderbar.
So, nun möchte ich jedoch das ganze mit SSL ausweiten und zwar so, dass noch immer Port X (nicht SSL) funktioniert.
Ich denke ich brauche pro Port einen eigenen Thread, nicht?
Natürlich könnte ich die LoginServer und LoginServerSSL erstellen - ABER: LoginServer hat mehrere Methoden, die dann identisch wären - ned schön! Soll dafür eine abstrakte Klasse machen mit den ident. Methoden?
Oder soll ich mehrere Ports durch:
Oder ganz anders? Wie Implementiere ich also das abhorchen mehrerer Ports, wenn es sich einerseits um SSLSockets UND (normale) Sockets handelt? SSLServerSocket erbt ja von ServerSocket, doch deswegen brauche ich doch trotzdem unterschiedliche Threads, oder etwa nicht?Code :1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
Thread t1 = new Thread() { public void run() { ... socket = serversocket.accept(); ... } }; Thread t2 = new Thread() { public void run() { ... sslsocket = sslserversocket.accept(); ... } };
cheerioh und habt Dank
SiSGeändert von StehtimSchilf (20.02.09 um 12:33 Uhr)
-
20.02.09 12:32 #2
- Registriert seit
- Oct 2003
- Beiträge
- 117
Hi
also ich habs nun so gelöst:
(vereinfacht):
Code :1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35
class LoginServer extends Thread { private boolean isSSL = false; private ServerSocket serversocket = null; private SSLServerSocket sslserversocket = null; public LoginServer(int port, boolean isSSL) { this.isSSL = isSSL; if (isSSL) { sslserversocket = (SSLServerSocket) sslserversocketfactory.createServerSocket(port); sslserversocket.setSoTimeOut(1000); } else { serversocket = new ServerSocket(port); serversocket.setSoTimeOut(1000); } this.start(); } public void run() { Socket socket; if (this.isSSL) socket = sslserversocket.accept(); else socket = serversocket.accept(); ... ... if (this.isSSL) sslserversocket.close(); else serversocket.close(); } }
Und nun kann ich einfach irgendwo:
aufrufen und nun horcht es auf SSL und normal!Code :1 2
new LoginServer(8888, false); new LoginServer(9999, true);
Frage: Ist dies so Java-konform? Wenn nein, was sollte ich ändern?
thx & cheerioh
SiS
-
Alternativ kannst du ein Interface MyServer erstellen, das du dann in 2 Klassen SSLLoginServer und LoginServer implementierst.
Ist meiner Meinung nach sauberer, als diese if-Unterscheidung im run().
Noch "schöner" wäre dann, SSLLoginServer von LoginServer erben zu lassen und nur die Methoden zu überschreiben, deren Funktionalität sich an SSL anzupassen hat.
Ähnliche Themen
-
Windows-Sockets - Annehmen und Behandeln in getrennten Threads
Von Pain-maker im Forum C/C++Antworten: 14Letzter Beitrag: 28.06.10, 23:06 -
Sockets und Threads in C++
Von Ischterai im Forum C/C++Antworten: 3Letzter Beitrag: 26.03.09, 19:22 -
[C] Problem mit Sockets und Threads
Von hebru im Forum C/C++Antworten: 1Letzter Beitrag: 08.10.07, 08:36 -
C# - Fortschritt eines Threads abfragen
Von Alexander12 im Forum .NET CaféAntworten: 4Letzter Beitrag: 04.09.05, 18:41 -
Mehrere Abfragen, Mehrere Auswertungen -> Alles auf einer Seite?
Von uwee im Forum PHPAntworten: 6Letzter Beitrag: 10.12.04, 14:04





Zitieren
Login





