Zu Lernzwecken schreibe ich einen Java TCP Server. Dies wird in eine eigene Klasse wie SyteTCPServer
verpackt, die ServerSocket
verwendet, um Verbindungslogik zu behandeln. Dies ist für ein Schulprojekt, wo gute Code-Praktiken sehr wichtig sind.Java TCP Server Klasse Abstraktion
Der Grund, warum es in eine eigene Klasse versetzt wird, ist, dass es ein spezifisches Protokoll auf Anwendungsebene gibt. Die Klasse ist Teil eines größeren Projekts.
Beim googeln fand ich nur Leute, die alle ServerSocket
und die dazugehörige Logik direkt in die Hauptmethode einfügten. Ich bin mir nicht sicher, ob das der richtige Weg ist, wenn es um OOP geht?
Mein SyteTCPServer
hat eine einfache Start()
und Stop()
Verfahren ist es, die Umsetzung verbirgt sich ein ServerSocket
der Verwendung von Clients verarbeitet, etc ..
Allerdings bin ich ein bisschen, weil mit viel der Netzwerkfunktionen stapfte, IntelliJ warnt mich vor IOExceptions. Das Akzeptieren eines Clients könnte eine IOException auslösen, also könnte man den Ausgabestrom des besagten Clients bekommen, also könnte writeBytes
, .. Sie meinen Punkt bekommen.
Im Zusammenhang mit Abstraktion, wie gehe ich am besten über diese Ausnahmen? Schreibe ich eine throws IOException
neben der Methode, die höher-up-Code try...catch
die SyteTCPServer.Start
?
Sollte auch der gesamte Server stoppen Ausnahmen auftreten, oder "verstecke" ich die Tatsache, dass einer der Clients nicht richtig verbunden? Oder sollte ich ein Ereignis auslösen, wenn ein Client keine Verbindung herstellen konnte? Ich weiß wirklich nicht ..
Ich vermeide es auch, Ausgabe zu schreiben, wenn eine Ausnahme auftritt wie die Pest wegen UI/Core-Code-Trennung.
Ich hoffe, das sind nicht zu viele Fragen in einem.
Hier ist ein Beispiel für die Start-Methode habe ich mit IOException wirft:
public void Start() throws IOException {
this.listenSocket = new ServerSocket(this.port);
Listen();
}