Erstellen eine PPTP-Verbindung in Java

Mehvish Ashiq 15 Februar 2024
  1. Warum wir eine PPTP-Verbindung brauchen
  2. Erstellen eine PPTP-Verbindung in Java
Erstellen eine PPTP-Verbindung in Java

In diesem Artikel erfahren Sie, wie Sie mit Java eine PPTP-Verbindung (Point-to-Point Tunneling Protocol) erstellen.

Warum wir eine PPTP-Verbindung brauchen

Das Point-to-Point Tunneling Protocol wird verwendet, um das komprimierte und verschlüsselte PPP-Paket (Point-to-Point Protocol) in IP-Datagramme zum Senden über das Internet einzukapseln.

Die IP-Datagramme werden weiter über das Netzwerk geroutet, bis sie den Point-to-Point Tunneling Protocol Server erreichen, der mit dem privaten Netzwerk und dem Internet verbunden ist.

Der PPTP-Server dekonstruiert (zerlegt) das IP-Datagramm in ein PPP-Paket (Point-to-Point Protocol) und entschlüsselt das PPP-Paket über das Netzwerkprotokoll des privaten Netzwerks. Denken Sie daran, dass das Netzwerkprotokoll in einem privaten Netzwerk, das von PPTP unterstützt wird, TCP/IP, NetBEUI, IPX ist.

Dieses Tutorial verwendet eine TCP/IP-Verbindung. Beginnen wir also mit einem praktischen Beispiel.

Erstellen eine PPTP-Verbindung in Java

Beispielcode (client.java):

import java.io.*;
import java.net.*;

public class client {
  public static void main(String[] args) throws IOException {
    Socket socket = new Socket("localhost", 5000);

    PrintWriter printWriter = new PrintWriter(socket.getOutputStream());
    printWriter.println("Is it working?");
    printWriter.flush();

    InputStreamReader in = new InputStreamReader(socket.getInputStream());
    BufferedReader bufferReader = new BufferedReader(in);

    String str = bufferReader.readLine();
    System.out.println("server : " + str);
  }
}

Beispielcode (server.java):

import java.io.*;
import java.net.*;

public class server {
  public static void main(String[] args) throws IOException {
    ServerSocket serverSocket = new Socket(5000);
    Socket socket = serverSocket.accept();

    System.out.println("client connected");

    InputStreamReader in = new InputStreamReader(socket.getInputStream());
    BufferedReader bufferReader = new BufferedReader(in);

    String str = bufferReader.readLine();
    System.out.println("client : " + str);

    PrintWriter printWriter = new PrintWriter(socket.getOutputStream());
    printWriter.println("Yes");
    printWriter.flush();
  }
}

Ausgabe:

Erstellen Sie eine PPTP-Verbindung mit Java - Ausgabe

Hier sendet der Client die Nachricht als Is it working? und der Server antwortet mit Yes.

Wie? Lassen Sie uns verstehen, was in den Klassen client.java und server.java passiert.

In der Klasse client.java verwenden wir eine Klasse namens Socket, um uns mit dem Server zu verbinden. Die Klasse Socket nimmt zwei Parameter entgegen, die IP-Adresse und eine TCP-Portnummer.

IP-Adresse bedeutet die Adresse des Servers. Wir führen beide Programme (client.java & server.java) auf demselben Rechner aus; deshalb haben wir localhost geschrieben.

Die TCP-Portnummer zeigt die auf dem Server ausgeführte Anwendung an.

Wir können jede Portnummer von 0 bis 64535 verwenden. Wir verwenden in diesem Tutorial 5000.

Für Kommunikationszwecke über die Socket-Verbindung verwenden wir Streams sowohl für die Eingabe als auch für die Ausgabe. Wieso den? Wir implementieren eine bidirektionale Kommunikation (Client zu Server & Server zu Client).

In der Klasse server.java benötigen wir zwei Sockets. Einer ist ein einfacher Socket der Klasse Socket, der für die Kommunikation mit dem Client verwendet wird, und der andere ist ServerSocket, der auf die Anfragen des Clients wartet.

Diese Anfragen werden serverseitig empfangen, wenn ein Client ein neues Objekt der Klasse Socket erstellt, indem er new Socket(IP address, port number) verwendet.

Bevor die Funktion getInputStream() verwendet wird, um Eingaben vom Socket zu akzeptieren, blockiert die Funktion accept() und wartet, bis der Client eine Verbindung mit dem Server herstellt. Hier verwenden wir Eingabe- und Ausgabeströme, um die Daten vom Client abzurufen und Daten an den Client zu senden.

Sie haben vielleicht eine Frage: Warum brauchen wir Streams für Client und Server? Dies liegt daran, dass die Rohdaten nicht über das Netzwerk gesendet werden können.

Die Daten müssen in Streams konvertiert werden, um von Client zu Server und von Server zu Client zu kommunizieren.

Mehvish Ashiq avatar Mehvish Ashiq avatar

Mehvish Ashiq is a former Java Programmer and a Data Science enthusiast who leverages her expertise to help others to learn and grow by creating interesting, useful, and reader-friendly content in Computer Programming, Data Science, and Technology.

LinkedIn GitHub Facebook