Créer une connexion PPTP en Java

Mehvish Ashiq 15 février 2024
  1. Pourquoi avons-nous besoin d’une connexion PPTP
  2. Créer une connexion PPTP en Java
Créer une connexion PPTP en Java

Dans cet article, nous allons apprendre à créer une connexion PPTP (Point-to-Point Tunneling Protocol) à l’aide de Java.

Pourquoi avons-nous besoin d’une connexion PPTP

Le Point-to-Point Tunneling Protocol est utilisé pour encapsuler le paquet PPP (Point-to-Point Protocol) compressé et crypté dans des datagrammes IP pour les envoyer sur Internet.

Les datagrammes IP continuent d’être acheminés sur le réseau jusqu’à ce qu’ils atteignent le serveur de protocole de tunneling point à point, connecté au réseau privé et à Internet.

Le serveur PPTP déconstruit (désassemble) le datagramme IP en paquet PPP (Point-to-Point Protocol) décrypte le paquet PPP via le protocole réseau du réseau privé. N’oubliez pas que le protocole réseau sur un réseau privé pris en charge par PPTP est TCP/IP, NetBEUI, IPX.

Ce tutoriel utilisera une connexion TCP/IP. Alors, commençons par un exemple pratique.

Créer une connexion PPTP en Java

Exemple de code (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);
  }
}

Exemple de code (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();
  }
}

Production:

créer une connexion pptp en utilisant java - sortie

Ici, le client envoie le message Is it working? et le serveur répond par Yes.

Comment? Comprenons ce qui se passe dans les classes client.java et server.java.

Dans la classe client.java, on utilise une classe nommée Socket pour se connecter au serveur. La classe Socket prend deux paramètres, l’adresse IP et un numéro de port TCP.

L’adresse IP signifie l’adresse du serveur. Nous exécutons les deux programmes (client.java & server.java) sur la même machine ; c’est pourquoi nous avons écrit localhost.

Le numéro de port TCP affiche l’application exécutée sur le serveur.

Nous pouvons utiliser n’importe quel numéro de port allant de 0 à 64535. Nous utilisons 5000 dans ce tutoriel.

À des fins de communication via la connexion socket, nous utilisons des flux pour l’entrée et la sortie à la fois. Pourquoi? Nous mettons en place une communication bidirectionnelle (client à serveur et serveur à client).

Dans la classe server.java, nous avons besoin de deux sockets. L’un est un simple socket de la classe Socket qui sera utilisé pour communiquer avec le client, et l’autre est ServerSocket qui attend les requêtes du client.

Ces requêtes sont reçues côté serveur lorsqu’un client crée un nouvel objet de la classe Socket en utilisant new Socket(IP address, port number).

Avant d’utiliser la fonction getInputStream() pour accepter l’entrée du socket, la fonction accept() bloque et attend jusqu’à ce que le client se connecte au serveur. Ici, nous utilisons des flux d’entrée et de sortie pour obtenir les données du client et envoyer des données au client.

Vous avez peut-être une question : pourquoi avons-nous besoin de flux pour le client et le serveur ? C’est parce que les données brutes ne peuvent pas être envoyées sur le réseau.

Les données doivent être converties en flux pour communiquer du client au serveur et du serveur au client.

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