Tchat: Utilisation de ‘DatagrammeSocket’ pour envoyer et recevoir des paquets datagramme

Author:

serveur, socket, socket, java, datagram, table
{filelink=8999}

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.net.DatagramPacket;
import java.net.DatagramSocket;
import java.net.InetAddress;
import java.util.Scanner;

/***
 * Une Application de Tchat avec
 * DatagramPacke et DatagramPacket.
 * Exécuter les deux programme séparement.
 ***/

 // Client
 class Client
{

  public static void main(String[] args) throws Exception
  {
   // Création d'un socket datagramme
    DatagramSocket client_sock = new DatagramSocket();

    // Déclarer un tableau d'octets qui va contenir les données du datagramme
    byte[] buff = new byte[1024];

    DatagramPacket in_paquet = new DatagramPacket(buff, buff.length);

    InetAddress host = InetAddress.getByName("localhost");

    // Commencer la communication
    while (true)
    {
      Scanner stdin = new Scanner(System.in);
      System.out.println ("Tapez un message: ");
      String msg_client = stdin.nextLine();

      // Arrêter la Communication si le message='quit'
      if (msg_client.equals("quit"))
          break;
      String msg_paquet = "Client a écrit: " + msg_client;
      buff = msg_paquet.getBytes();

      // Créer et envoyer le Paquet
      DatagramPacket out_paquet = new DatagramPacket(buff, buff.length, host, 9999);
      client_sock.send(out_paquet);

      // Récuperer les messages reçus
      client_sock.receive(in_paquet);
      String msg_in = "Message Reçu de " + in_paquet.getAddress() + ", " + in_paquet.getPort() + ": "
          + new String(in_paquet.getData(), 0, in_paquet.getLength());

       // Afficher le message
      System.out.println(msg_in);
    }
  }
}

import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.net.DatagramPacket;
import java.net.DatagramSocket;

// Serveur
 public class Server
{
  public static void main(String[] args) throws Exception
  	 {

    // Création d'un socket datagramme au port 655
    DatagramSocket serveur_sock = new DatagramSocket(655);

    // Empaquetage des Données
    byte[] buff = new byte[1024];
    DatagramPacket in_paquet_s = new DatagramPacket(buff, buff.length);

    System.out.println("Le serveur est lancé...");

    // Entamer l'échange avec les clients
    while (true)
    	 {
      serveur_sock.receive(in_paquet_s);
      String msg_in_s = new String(in_paquet_s.getData(), 0, in_paquet_s.getLength()) + ", IP: "
          + in_paquet_s.getAddress() + ", Port: " + in_paquet_s.getPort();
      System.out.println(msg_in_s);

      Scanner stdin = new Scanner(System.in);
      System.out.println ("Tapez un message: ");
      String msg_serveur = stdin.nextLine();
      String msg_paquetS = "Le Serveur a écrit: "+ msg_serveur;
      buff = msg_paquetS.getBytes();

      // Envoyer le message aux clients
      DatagramPacket out_paquet = new DatagramPacket(buff, buff.length, in_paquet_s.getAddress(), in_paquet_s.getPort());
      serveur_sock.send(out_paquet);
    }
  }
}

A Voir sur le même Sujet:

  • datagrammesocket java
  • envoiyer un ficher a un client
  • code tchat en java avec datagramme

Leave a Reply

Your email address will not be published. Required fields are marked *