Erstellen eines Chat-Servers mit Java

Einführung

Das Netzwerk ist ein wichtiger Programmierzweig, der für die Verbindung von Benutzern über Geräte von entscheidender Bedeutung ist. Daher haben viele Programmiersprachen mehrere Möglichkeiten, Verbindungen zwischen Benutzern und Servern oder zwischen Peers herzustellen. Java ist eine der ersten Sprachen, die viele Programmierer lernen, und eine der interessanten Möglichkeiten, wie Java mit Netzwerkverbindungen umgehen kann, ist die Verwendung von Java Sockets. Ich habe dieses Tutorial vorbereitet, um zu lernen, wie Sockets in Java verwendet werden, indem ein Chat-Server zwischen einem Server und vielen Benutzern entwickelt wird. Dieses Tutorial ist in clientseitige und serverseitige Entwicklung unterteilt.

Bedarf:

  • Java JDK (ich habe dafür Version 1.8.0_74 verwendet)
  • Java IDE (ich habe dafür Eclipse Mars verwendet)
  • Eine Paketstruktur mit den oben genannten Klassen

Timer: ca. 15-30 Minuten

Kenntnisse: In diesem Handbuch wird davon ausgegangen, dass Sie über grundlegende Java- Kenntnisse verfügen und mit gängigen Java-E / A-Typen vertraut sind

Schritt 1: Richten Sie einen ServerSocket in der Serverklasse ein

Erstellen Sie einen statischen Server-Socket am Anfang von main in der ChatServer-Klasse und instanziieren Sie ihn mit einer Portnummer.

TIPP: ServerSockets können mit einer anderen Portnummer als 4444 instanziiert werden, aber Nummern unter 1000 werden mit größerer Wahrscheinlichkeit bereits vom System verwendet.

Schritt 2: Erstellen Sie einen Socket in der Anmeldeklasse

Erstellen Sie einen Socket in der Hauptanmeldemethode und geben Sie die Hostadresse und die Portnummer an. Da dies ein Anmeldefenster ist, kann der Socket eine Instanzvariable sein, da er später an das eigentliche Chatfenster übergeben wird.

TIPP: "localhost" wird in den Socket-Parametern zu Debugging-Zwecken verwendet, um anzugeben, dass der Server auf demselben Computer wie der Client ausgeführt wird. Später kann dies geändert werden, um eine Hostadresse für die Verbindung zu einem Remote-Server zu verwenden.

Schritt 3: Erstellen Sie eine Schleife, um Clients kontinuierlich zu akzeptieren

Starten Sie nach dem Instanziieren des serverSocket in chatServer eine while-Schleife, die kontinuierlich alle Clients akzeptiert.

Schritt 4: Erstellen Sie die Client-Threads

  1. Erstellen Sie mit dem von serversocket.accept empfangenen Socket einen neuen ClientThread.
  2. Erstellen Sie mit dem ClientThread einen neuen Thread und rufen Sie dann start für den Thread auf.
  3. Lassen Sie ClientThread in ClientThread ChatServer erweitern und führen Sie Runnable aus
  4. Erstellen Sie den ClientThread-Konstruktor und fügen Sie den Methodenlauf hinzu.

Schritt 5: Erstellen Sie den Server-Thread

  1. Erstellen Sie einen neuen ServerThread mit dem Socket.
  2. Erstellen Sie mit dem ServerThread einen neuen Thread und rufen Sie dann start für den Thread auf.
  3. Lassen Sie ServerThread in ServerThread Runnable implementieren
  4. Erstellen Sie den ServerThread-Konstruktor und fügen Sie den Methodenlauf hinzu.

Schritt 6: Lassen Sie den Client-Thread Daten senden und empfangen

  1. Erstellen Sie in ClientThread einen privaten BufferedReader, um Daten von Clients zu empfangen, und einen PrintWriter, um auf den Client zu schreiben.
  2. Erstellen Sie einen Getter für den PrintWriter
  3. Initialisieren Sie den PrintWriter im Lauf mit dem Ausgabestream des Sockets und den BufferedReader mit einem neuen InputStreamReader unter Verwendung des Eingabestreams des Sockets
  4. Erstellen Sie im Lauf eine while-Schleife, die nach neuen Eingaben sucht und die Eingaben mithilfe der Liste der ClientThreads und des Getters für den PrintWriter an alle Clients druckt

Schritt 7: Lassen Sie den Server-Thread Daten senden und empfangen

  1. Erstellen Sie in ServerThread einen privaten BufferedReader, um Daten vom Server zu empfangen, einen anderen BufferedReader, um Daten vom Benutzer zu empfangen, und einen PrintWriter, um auf den Server zu schreiben.
  2. Initialisieren Sie den PrintWriter in Ausführung mit dem Ausgabestream des Sockets, den BufferedReader des Servers mit einem neuen InputStreamReader mithilfe des Eingabestreams des Sockets und den BufferedReader des Benutzers mit einem neuen InputStreamReader mithilfe von System.In
  3. Erstellen Sie im Lauf eine while-Schleife, die nach neuen Eingaben vom Server sucht und die Eingaben an die Konsole druckt, nach neuen Eingaben des Benutzers sucht und diese Eingaben auf dem Server druckt.

Schritt 8: Testen Sie den Server und fügen Sie optionale Funktionen hinzu

Nach dem Ausführen des Servers und dem Starten von Clients sollte das Programm alle Nachrichten von jedem Client an alle anderen Clients weiterleiten. Dies war ein kleiner Test, was mit Java-Sockets gemacht werden kann.

Sie können dieses Projekt erweitern, indem Sie Funktionen hinzufügen, mit denen der Server selbst Nachrichten weiterleiten, Nachrichten archivieren, andere Eingabeformen zulassen und mehr mit Java-Sockets und Netzwerken im Allgemeinen vertraut machen kann.

Ähnlicher Artikel